Adam Zyzak created ARTEMIS-4370:
-----------------------------------

             Summary: Sendig publish message with existing topic alias and 
different topic causes message to be sent to incorrect topic
                 Key: ARTEMIS-4370
                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4370
             Project: ActiveMQ Artemis
          Issue Type: Bug
          Components: MQTT
    Affects Versions: 2.29.0
            Reporter: Adam Zyzak


h3. Description

When sending MQTT 5.0 publish message with topic alias number that has existing 
mapping for given connection and new topic, Artemis broker will incorrectly 
route message to topic from alias mapping instead of topic from publish 
message. This is incorrect behavior because broker should route message to 
topic from publish message and update alias mapping with new topic. 

Section 3.3.2.3.4 Topic Alias in MQTT 5.0 specification states the following:
{code:java}
A sender can modify the Topic Alias mapping by sending another PUBLISH in the 
same Network Connection with the same Topic Alias value and a different 
non-zero length Topic Name. {code}
 
h3. Steps to reproduce
 # Create 2 MQTT subscribers: first on topic1 and second on topic2
 # Create 1 MQTT publisher
 # From publisher send publish message on topic1 with MQTT property TOPIC_ALIAS 
 set to 1
 # From publisher send publish message on topic2 with MQTT property TOPIC_ALIAS 
 set to 1

h3. Current result

First message is correctly routed to topic1, but second message is incorrectly 
routed to topic1 instead of topic2
Method 
org.apache.activemq.artemis.core.protocol.mqtt.MQTTPublishManager#sendToQueue 
adds mapping only if alias does not exist
h3. Expected result 

Topic field in MQTT publish should have priority over TOPIC_ALIAS property. 
Topic alias stored under existing alias number should be updated.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to