You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Gary Tully (JIRA)" <ji...@apache.org> on 2014/03/12 14:02:43 UTC
[jira] [Resolved] (AMQ-5092) MQTT uses duplicate packet IDs for
PUBLISH messages
[ https://issues.apache.org/jira/browse/AMQ-5092?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gary Tully resolved AMQ-5092.
-----------------------------
Resolution: Fixed
Assignee: Gary Tully
patch applied with thanks in http://git-wip-us.apache.org/repos/asf/activemq/commit/67f151fe
> MQTT uses duplicate packet IDs for PUBLISH messages
> ---------------------------------------------------
>
> Key: AMQ-5092
> URL: https://issues.apache.org/jira/browse/AMQ-5092
> Project: ActiveMQ
> Issue Type: Bug
> Components: MQTT
> Affects Versions: 5.9.0
> Reporter: Dhiraj Bokde
> Assignee: Gary Tully
> Fix For: 5.10.0
>
> Attachments: AMQ-5092.patch, AMQ-5092.patch2
>
>
> MQTT protocol converters does not correctly generate unique packet ids for retained and non-retained publish messages sent to clients. MQTT requires that all Publish messages with QoS > 0 must have a unique packet id which can be used by clients to coordinate the PUBACK, PUBREC, PUBREL and PUBCOMP messages depending upon the QoS flow.
> Although retained messages published on creation of client subscriptions are copies of retained messages, they must carry a unique packet id when dispatched to clients. ActiveMQ re-uses the retained message's packet id, which makes it difficult to acknowledge these messages when wildcard topics are used.
> ActiveMQ also sends the same non-retained message multiple times for every matching subscription for overlapping subscriptions. These messages also re-use the publisher's message id as the packet id, which breaks client acknowledgment.
> A patch is included, which fixes all the above scenarios. It generates a unique packet id for every publish (retained and non-retained), and also ensures that redelivery on the same connection will re-use message ids, with the dup flag set. The patch also maps JMS redelivery status for a subscription to the MQTT Dup flag to indicate duplicate messages. Unit tests are included to test correct packet id generation.
--
This message was sent by Atlassian JIRA
(v6.2#6252)