You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2014/02/17 18:35:59 UTC

git commit: https://issues.apache.org/jira/browse/AMQ-5058

Repository: activemq
Updated Branches:
  refs/heads/trunk f42d56c1f -> b67978791


https://issues.apache.org/jira/browse/AMQ-5058

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

Branch: refs/heads/trunk
Commit: b679787917fe3cbf42f6dcd6bc8e9d7e853e5659
Parents: f42d56c
Author: Timothy Bish <ta...@gmai.com>
Authored: Mon Feb 17 12:35:33 2014 -0500
Committer: Timothy Bish <ta...@gmai.com>
Committed: Mon Feb 17 12:35:33 2014 -0500

----------------------------------------------------------------------
 .../transport/mqtt/MQTTProtocolConverter.java       | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/b6797879/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 b816a32..e9fc9f7 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
@@ -187,7 +187,7 @@ public class MQTTProtocolConverter {
     void onMQTTConnect(final CONNECT connect) throws MQTTProtocolException {
 
         if (connected.get()) {
-            throw new MQTTProtocolException("All ready connected.");
+            throw new MQTTProtocolException("Already connected.");
         }
         this.connect = connect;
 
@@ -211,6 +211,18 @@ public class MQTTProtocolConverter {
         if (clientId != null && !clientId.isEmpty()) {
             connectionInfo.setClientId(clientId);
         } else {
+            // Clean Session MUST be set for 0 length Client Id
+            if (!connect.cleanSession()) {
+                CONNACK ack = new CONNACK();
+                ack.code(CONNACK.Code.CONNECTION_REFUSED_IDENTIFIER_REJECTED);
+                try {
+                    getMQTTTransport().sendToMQTT(ack.encode());
+                    getMQTTTransport().onException(IOExceptionSupport.create("Invalid Client ID", null));
+                } catch (IOException e) {
+                    getMQTTTransport().onException(IOExceptionSupport.create(e));
+                }
+                return;
+            }
             connectionInfo.setClientId("" + connectionInfo.getConnectionId().toString());
         }
 
@@ -249,6 +261,7 @@ public class MQTTProtocolConverter {
                             ack.code(CONNACK.Code.CONNECTION_REFUSED_BAD_USERNAME_OR_PASSWORD);
                             getMQTTTransport().sendToMQTT(ack.encode());
                             getMQTTTransport().onException(IOExceptionSupport.create(exception));
+                            return;
                         }
 
                         CONNACK ack = new CONNACK();
@@ -289,7 +302,6 @@ public class MQTTProtocolConverter {
 
     public void restoreDurableSubs(List<SubscriptionInfo> subs) {
         try {
-            SUBSCRIBE command = new SUBSCRIBE();
             for (SubscriptionInfo sub : subs) {
                 String name = sub.getSubcriptionName();
                 String[] split = name.split(":", 2);