Updated Branches:
  refs/heads/trunk 6e68a3711 -> 706830268

More improvements for AMQ-5043.  Drop all messages sent to topics starting '$' 
to honor MQTT 3.1.1 spec requirments.

Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/70683026
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/70683026
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/70683026

Branch: refs/heads/trunk
Commit: 706830268e1cecfe165feb444ee5b62e954e7d33
Parents: 6e68a37
Author: Hiram Chirino <[email protected]>
Authored: Wed Feb 12 13:53:18 2014 -0500
Committer: Hiram Chirino <[email protected]>
Committed: Wed Feb 12 13:53:18 2014 -0500

----------------------------------------------------------------------
 .../transport/mqtt/MQTTProtocolConverter.java      | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/70683026/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTProtocolConverter.java
----------------------------------------------------------------------
diff --git 
a/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTProtocolConverter.java
 
b/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTProtocolConverter.java
index d19a0b3..b816a32 100644
--- 
a/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTProtocolConverter.java
+++ 
b/activemq-mqtt/src/main/java/org/apache/activemq/transport/mqtt/MQTTProtocolConverter.java
@@ -94,6 +94,23 @@ public class MQTTProtocolConverter {
     }
 
     void sendToActiveMQ(Command command, ResponseHandler handler) {
+
+        // Lets intercept message send requests..
+        if( command instanceof ActiveMQMessage) {
+            ActiveMQMessage msg = (ActiveMQMessage) command;
+            if( msg.getDestination().getPhysicalName().startsWith("$") ) {
+                // We don't allow users to send to $ prefixed topics to avoid 
failing MQTT 3.1.1 spec requirements
+                if( handler!=null ) {
+                    try {
+                        handler.onResponse(this, new Response());
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+                return;
+            }
+        }
+
         command.setCommandId(generateCommandId());
         if (handler != null) {
             command.setResponseRequired(true);

Reply via email to