{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":24653868,"defaultBranch":"main","name":"moquette","ownerLogin":"moquette-io","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2014-09-30T20:14:41.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/45517740?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1690977090.0","currentOid":""},"activityList":{"items":[{"before":"432b3f0b592d7fda57e44eb1d1981feca45bd700","after":"d784d67694e172e9ed17aee79d196d559b594e1e","ref":"refs/heads/main","pushedAt":"2024-05-01T09:34:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Reduced memory use on busy Sessions by removing handled items from inflightTimeouts (#834)\n\nItems in the inflightTimeouts DelayQueue were only ever removed when they\r\ntimed out. But in normal operation the related messages would have been\r\nhandled long before that. There should only ever be a number equal to the\r\nnumber of inflightSlots in the queue, but the queue would grow to the\r\nmaximum number of messages ever handled in a 5 second interval. This made\r\neach session take much more memory than needed.","shortMessageHtmlLink":"Reduced memory use on busy Sessions by removing handled items from in…"}},{"before":"2092693c5d9d5bcb0468631416d064c3707ffa32","after":"432b3f0b592d7fda57e44eb1d1981feca45bd700","ref":"refs/heads/main","pushedAt":"2024-05-01T08:43:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Fixed ExpirationService not shutting down Executor (#835)\n\nWhen shutting down the server the Executor Threads in ScheduledExpirationService instances were not terminated, resulting in a hanging server that would not shut down.","shortMessageHtmlLink":"Fixed ExpirationService not shutting down Executor (#835)"}},{"before":"858a0f38f48eacf7e232451525ad1d1f7412bbaf","after":"2092693c5d9d5bcb0468631416d064c3707ffa32","ref":"refs/heads/main","pushedAt":"2024-04-30T07:49:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Fixed empty shared subscriptions list remaining forever in cache (#836)\n\nEven for clients that never made shared subscriptions, upon session clean,\r\nan empty shared subscriptions list was created and never removed.","shortMessageHtmlLink":"Fixed empty shared subscriptions list remaining forever in cache (#836)"}},{"before":"073cd6378713b7c83e11db89561b896e18de9431","after":"858a0f38f48eacf7e232451525ad1d1f7412bbaf","ref":"refs/heads/main","pushedAt":"2024-04-30T07:45:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Fixed #831: changed several cases where a shared readerIndex was changed (#832)\n\nDebugUtils.payload2Str set the readerIndex to the readableBytes, witch\r\nwas simply wrong. Utils.readBytesAndRewind was unused and thus removed.\r\nSegmentedPersistentQueueSerDes use of readBytes (that changes the\r\nreaderIndex) was changed to getBytes which does not change the readerIndex.","shortMessageHtmlLink":"Fixed #831: changed several cases where a shared readerIndex was chan…"}},{"before":"ac2a9be0cdce8997fee54349f61f9490b53c7824","after":"073cd6378713b7c83e11db89561b896e18de9431","ref":"refs/heads/main","pushedAt":"2024-04-20T15:01:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Switch serializer of Retained messages in H2 store to also handle MQTT properties. (#828)\n\nSwitch serializer of Retained messages in H2 store to also handle MQTT properties.\r\nImplement a new H2 DataType for Retained Message.","shortMessageHtmlLink":"Switch serializer of Retained messages in H2 store to also handle MQT…"}},{"before":"9b9f286003e687271d495142bf1dc02c784bdc20","after":"ac2a9be0cdce8997fee54349f61f9490b53c7824","ref":"refs/heads/main","pushedAt":"2024-04-20T09:48:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Avoid decomposition of Publish fields into method params (#827)\n\nUpdated all PostOffice methods that accepted QoS, topic, retained flag and payload, components of a publish message to move around just the publish message without decomposing it.","shortMessageHtmlLink":"Avoid decomposition of Publish fields into method params (#827)"}},{"before":"dd1600db0e1b115172fc044cb01b92d01c71682a","after":"9b9f286003e687271d495142bf1dc02c784bdc20","ref":"refs/heads/main","pushedAt":"2024-04-18T17:13:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Updated will publishing to contains also the message expire property (#824)\n\nUpdated will publishing to contains also the message expire property.\r\n\r\nChange the publishing of will messages (PostOffice.publishWill method) to include also the message expiry property.","shortMessageHtmlLink":"Updated will publishing to contains also the message expire property (#…"}},{"before":"495514a8eea7e76d4cd0da1994d8c77f34190349","after":"dd1600db0e1b115172fc044cb01b92d01c71682a","ref":"refs/heads/main","pushedAt":"2024-04-01T13:54:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Update message expiry remaining time and drop queued messages if expired (#823)\n\nUpdates the message expiry property, during forwarding of a publish, with the remaining seconds before expire.\r\nThis is done after extract a message from the Session's queue and before composing the publish message to forward.\r\nWhen a message is straight forwarded without being enqueue, the message expiry property is equally forwarded.","shortMessageHtmlLink":"Update message expiry remaining time and drop queued messages if expi…"}},{"before":"6ffb10656f061b9426382fb163a8350d905b5b5a","after":"495514a8eea7e76d4cd0da1994d8c77f34190349","ref":"refs/heads/main","pushedAt":"2024-03-24T17:38:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Message expiry for queued (#822)\n\nAvoid to publish messages that has elapsed its expire property.\r\n- Reworked some Session methods arguments list to be wrapped inside the PublishedMessage\r\n- Extracts the message expiry property from publish and move around down to the forwarding logic to matching subscriptions.\r\n- Update the publish to subscription logic to drop messages that has elapsed their expiry.\r\n- Adds integration test to prove the feature.","shortMessageHtmlLink":"Message expiry for queued (#822)"}},{"before":"23c7b398696aeacefe0eb994d48d60db066c7bdd","after":"6ffb10656f061b9426382fb163a8350d905b5b5a","ref":"refs/heads/main","pushedAt":"2024-03-22T15:22:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Add Netty native transport support on MacOS. (#806)","shortMessageHtmlLink":"Add Netty native transport support on MacOS. (#806)"}},{"before":"ed3901928734a3c3ad978c0f462af67e1edaaf75","after":"23c7b398696aeacefe0eb994d48d60db066c7bdd","ref":"refs/heads/main","pushedAt":"2024-02-18T10:57:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Updates retained messages management to hanbdle message expiry interval (#819)\n\nUpdate retained messages handling to store and retrieve the message expiry property if present in publish.\r\n\r\n - updates retained persistence store, list and retrieve the expiry\r\n - updated PostOffice to track and untrack retained messages that has to be wipe. A new instance of ScheduledExpirationService is reserved for this.\r\n - during push of retained recalculate the message expiry interval","shortMessageHtmlLink":"Updates retained messages management to hanbdle message expiry interv…"}},{"before":"eff06d80289f97e0483d40ec4916af4d7ecb664f","after":"ed3901928734a3c3ad978c0f462af67e1edaaf75","ref":"refs/heads/main","pushedAt":"2024-02-12T13:34:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Refactoring: converted loop into stream processing (#817)\n\nConverted a loop with various stages (subscription add and filtering to send retained) into fluent stream map and filter","shortMessageHtmlLink":"Refactoring: converted loop into stream processing (#817)"}},{"before":"0b92f0fde9f89933ed50844414ca88bb6673a303","after":"eff06d80289f97e0483d40ec4916af4d7ecb664f","ref":"refs/heads/main","pushedAt":"2024-02-11T14:08:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Implement subscription retain policy handling (#816)\n\nModify SubscriptionDirectory's add methods to return the indication of the fact that the subscription was freshly created.\r\nUpdates forwarding of retained messages during subscription processing to apply the three retained policies.","shortMessageHtmlLink":"Implement subscription retain policy handling (#816)"}},{"before":"e0d0609661aa8f53ce7c2f80c455781d449d8b49","after":"0b92f0fde9f89933ed50844414ca88bb6673a303","ref":"refs/heads/main","pushedAt":"2024-02-04T18:17:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Implements subscription options retain as published feature (#815)\n\n\r\n- Fixed publish of retained message to have the retained flag set.\r\n- Fixed existing integration test to avoid interference in tests.\r\n- Added test cases to verify retain as published.\r\n- Implementation of the feature, moved down the publish methods the value of the reatain contained in publish message and in publishToSession determine the retain flag to apply on the forwarding message based on the subscription option, for each option.","shortMessageHtmlLink":"Implements subscription options retain as published feature (#815)"}},{"before":"0ac52219b3011421837ab146ef48ad7d78e3d0d3","after":"e0d0609661aa8f53ce7c2f80c455781d449d8b49","ref":"refs/heads/main","pushedAt":"2024-02-03T11:16:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Update subscription option handling to account no local (#814)\n\nImplements handling of `noLocal` subscription option on MQTT5 connections.\r\n\r\n\r\n- Updates the Callable signature used by routing to return Void instead of String.\r\n- Updates the publishing of messages to subscribers to exclude or not from the target the clientId of the sender, depending on the status of noLocal in the target subscription.\r\n- Added integration test to proof the change","shortMessageHtmlLink":"Update subscription option handling to account no local (#814)"}},{"before":"1cc5db6e3486af1f94ec2da2ef0266450d0954bd","after":"0ac52219b3011421837ab146ef48ad7d78e3d0d3","ref":"refs/heads/main","pushedAt":"2024-01-22T17:51:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Make configurable the maximum qos that a server can handle (#811)\n\nUpdates the PostOffice when process the subscribe message to cap the QoS that the server would handle.","shortMessageHtmlLink":"Make configurable the maximum qos that a server can handle (#811)"}},{"before":"cfca15e44584bc044a1defec0493e94997c01d48","after":"1cc5db6e3486af1f94ec2da2ef0266450d0954bd","ref":"refs/heads/main","pushedAt":"2024-01-22T15:15:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Move from qos to subscription option (#810)\n\nMove from qos to subscription option implementing the persistence of SubscriptionOption to/from storage.\r\n\r\n\r\n- Modified all places where MqttQos was used in subscription and shared subscription to use the broader SubscriptionOption.\r\n- Updated serialization for H2 to serialize all the fields of MqttSubscriptionOption.\r\n- Adapted all the tests.","shortMessageHtmlLink":"Move from qos to subscription option (#810)"}},{"before":"4973627a52bd1b88e8ba9eae23fbc85a1b9420c4","after":"cfca15e44584bc044a1defec0493e94997c01d48","ref":"refs/heads/main","pushedAt":"2024-01-20T13:53:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Extracted same code used in both sendPublishQos1 and sendPublishQos2 (#809)","shortMessageHtmlLink":"Extracted same code used in both sendPublishQos1 and sendPublishQos2 (#…"}},{"before":"6a8f174a71b5f72679bb1b3c20d73ce1c09a3756","after":"4973627a52bd1b88e8ba9eae23fbc85a1b9420c4","ref":"refs/heads/main","pushedAt":"2024-01-19T16:27:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Adds subscription id into published messages back to susbscriber (#807)\n\n- Updates the serialization/deserialization of PublishedMessages in H2 and in segmented persistent queues to store and load MQTT properties, so that from a stored message with properties in queue then a PUBLISH messages could be recreated.\r\n- Updates the createPublishMessage method factory in MQTTConnection to accept an optional list of MQTT properties to attach to the PUBLISH message.\r\n- Updates PostOffice to send retained and non retained PUBLISH messages with subscriptionIdentifier MQTT property stored in the Subcription.\r\n- Moved sendPublishQos0 method from MQTTConnection to Session where others sendPublishQos1 and sendPublishQos2 already resides.\r\n- Added integration test to proof the publish with subscription identifier on both retained and non retained cases.","shortMessageHtmlLink":"Adds subscription id into published messages back to susbscriber (#807)"}},{"before":"8480e22134998405be8104c971ba605268753790","after":"6a8f174a71b5f72679bb1b3c20d73ce1c09a3756","ref":"refs/heads/main","pushedAt":"2024-01-06T13:57:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Implements serialization and deserialization for Subscription in H2 (#805)\n\nUpdate H2 storage to persist and reload subscription identifiers for shared and non-shared subscriptions.\r\n\r\nAdds subscription identifier to SubscriptionRequest, SharedSubscription classes.\r\nUpdates H2SubscriptionsRepository to persists and reload subscription identifier for shared and non-shared subscriptions.\r\nUpdates CTrieSubscriptionDirectory to store subscription identifier contained in SharedSubscription into the H2 storage.","shortMessageHtmlLink":"Implements serialization and deserialization for Subscription in H2 (#…"}},{"before":"f7a64d12618bb18fc2c8f1a0314063538bb8b380","after":"8480e22134998405be8104c971ba605268753790","ref":"refs/heads/main","pushedAt":"2024-01-01T10:44:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Store subscription indentifier into subscriptions trie (#804)\n\nSpread the SubscriptionIdentifier of a subscription request down to the SubscriptionDirectory.\r\nUpdated the CNode 's addSubscriptionto update subscriptions stored also if the subscription identifier changes (by value, removing or adding int).","shortMessageHtmlLink":"Store subscription indentifier into subscriptions trie (#804)"}},{"before":"3baad125f62e7897f654e5974aa7680746bb2caa","after":"f7a64d12618bb18fc2c8f1a0314063538bb8b380","ref":"refs/heads/main","pushedAt":"2023-12-30T13:24:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Implements the validation of subscription identifier properties in SUBSCRIBE (#803)\n\nCreated model class for subscription identifier and implemented decode and verification in SUBSCRIBE","shortMessageHtmlLink":"Implements the validation of subscription identifier properties in SU…"}},{"before":"f1c6f4ecfe259200c8e0a096e0cb4d11b477b3d2","after":"3baad125f62e7897f654e5974aa7680746bb2caa","ref":"refs/heads/main","pushedAt":"2023-12-27T14:53:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"CONNACK set shared subscription available property to true (#800)\n\nUpdates the CONNACK message's property shared subscription available to return reflect the availability of the functionality","shortMessageHtmlLink":"CONNACK set shared subscription available property to true (#800)"}},{"before":"5343761ed33cd64aa3d4cb26172045ed2d4ce819","after":"f1c6f4ecfe259200c8e0a096e0cb4d11b477b3d2","ref":"refs/heads/main","pushedAt":"2023-12-27T14:38:33.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Persistence for shared subscriptions (#802)\n\nImplemented persistence for shared subscriptions to sustain broker restarts.\r\n\r\nDefines and implements a series of methods () in Subscription Persistence so that shared subscription can be:\r\n- added singularly on subscribe\r\n- removed on unsubscribe\r\n- listed when broker restarts and has to recreate all the shared subscription in the Subscriptions directory structure\r\n- remove all the shared subscriptions for a client when its session terminates","shortMessageHtmlLink":"Persistence for shared subscriptions (#802)"}},{"before":"43a93ba67de59ee35e52df8199b6e14161079851","after":"5343761ed33cd64aa3d4cb26172045ed2d4ce819","ref":"refs/heads/main","pushedAt":"2023-12-22T16:29:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Unsubscribe shared subscriptions (#799)\n\nUpdates the CTrie.removeSubscriptionsFor to accept an UnsubscribeRequest instead of simple parameters, customizing the method to handle a shared subscription's unsubscribe request.\r\nAdds a method removeSharedSubscriptionsForClient to remove in one step all the shared subscriptions of a session, in doing so it introduces a mapping cache clientId -> list of subscription to avoid a full tree traversal.","shortMessageHtmlLink":"Unsubscribe shared subscriptions (#799)"}},{"before":"b2c5198b76ac510115500eeeb15d34f1bc589cc2","after":"43a93ba67de59ee35e52df8199b6e14161079851","ref":"refs/heads/main","pushedAt":"2023-12-16T17:53:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Fixed integration test for connect use case (#798)\n\nFixed integration test for connect use case to verify publish of testment messages after opening a publish listeners in the client to don't loose publishes and be sure that no publishes correspond to the effective reality and aren't simply lost publishes","shortMessageHtmlLink":"Fixed integration test for connect use case (#798)"}},{"before":"39b1688cb720876d61aad4d323a99b5cf884692d","after":"b2c5198b76ac510115500eeeb15d34f1bc589cc2","ref":"refs/heads/main","pushedAt":"2023-12-16T16:46:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Initial implementation of shared subscriptions (#796)\n\nContains a series of updates to the broker internal structures to sustain shared subscription registering and dispatching of publish messages.\r\n\r\nIn CTrie's CNode add a separate shared subscriptions data structure to contains the shared subscriptions list related to share name for a given topic filter. It's implemented as a map keyed by share name which maps to a list of shared subscriptions.\r\nUpdated the CTrie's insertion method to use a data class SubscriptionRequest to capture the shared and non shared subscription actions.\r\nImplemented test cases to cover the various MQTT spec requirements as integrations tests, and adapted utility classes (like the low level Client to permit the verification).","shortMessageHtmlLink":"Initial implementation of shared subscriptions (#796)"}},{"before":"6a7bc497f613c2f88cb4d0453f08fdbcb9e779aa","after":"39b1688cb720876d61aad4d323a99b5cf884692d","ref":"refs/heads/main","pushedAt":"2023-11-18T16:52:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Validate shared subscription and closed connection if not valid (#795)\n\nDuring the processing of an MQTT5 SUBSCRIBE message search all topicFilters for shared subscriptions and check for validity respect to specs [MQTT-4.8.2-1] [MQTT-4.8.2-1]","shortMessageHtmlLink":"Validate shared subscription and closed connection if not valid (#795)"}},{"before":"c8258d1ec8ee8d6e9cf2bde1605cf15722350830","after":"6a7bc497f613c2f88cb4d0453f08fdbcb9e779aa","ref":"refs/heads/main","pushedAt":"2023-11-11T17:20:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Implements reserved topic matching prescriptions (#793)\n\nUpdates the mathcing algorithm inside CTrie to negatively match topic names in the reserved form (start with $) against wildcards position as first token of a topic filter.\r\nRefactored the tests to reuse integration fixture also outside the MQTT5 test suite, because this change regards all protocols starting from MQTT3.1.1.","shortMessageHtmlLink":"Implements reserved topic matching prescriptions (#793)"}},{"before":"c25a331371dab70bdb46f90e5ae80eaf0dd6e622","after":"c8258d1ec8ee8d6e9cf2bde1605cf15722350830","ref":"refs/heads/main","pushedAt":"2023-11-04T16:56:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"andsel","name":"Andrea Selva","path":"/andsel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1038545?s=80&v=4"},"commit":{"message":"Added Github PR template (#790)","shortMessageHtmlLink":"Added Github PR template (#790)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEPsQ8BAA","startCursor":null,"endCursor":null}},"title":"Activity · moquette-io/moquette"}