diff --git a/broker/pom.xml b/broker/pom.xml index 13f96979..cd84247e 100644 --- a/broker/pom.xml +++ b/broker/pom.xml @@ -144,8 +144,8 @@ org.eclipse.paho - mqtt-client - 0.4.0 + org.eclipse.paho.client.mqttv3 + 1.0.1 test @@ -214,11 +214,11 @@ - + diff --git a/broker/src/main/java/org/eclipse/moquette/spi/impl/ProtocolProcessor.java b/broker/src/main/java/org/eclipse/moquette/spi/impl/ProtocolProcessor.java index c7ac82a2..e5b95fe5 100644 --- a/broker/src/main/java/org/eclipse/moquette/spi/impl/ProtocolProcessor.java +++ b/broker/src/main/java/org/eclipse/moquette/spi/impl/ProtocolProcessor.java @@ -172,6 +172,7 @@ class ProtocolProcessor implements EventHandler { } m_clientIDs.get(msg.getClientID()).getSession().close(false); + LOG.info("Found an existing connection with same client ID <{}>, forced to close", msg.getClientID()); } ConnectionDescriptor connDescr = new ConnectionDescriptor(msg.getClientID(), session, msg.isCleanSession()); diff --git a/bundle/pom.xml b/bundle/pom.xml index 83e6a0c9..6784044f 100644 --- a/bundle/pom.xml +++ b/bundle/pom.xml @@ -150,8 +150,8 @@ org.eclipse.paho - mqtt-client - 0.4.0 + org.eclipse.paho.client.mqttv3 + 1.0.1 test @@ -221,10 +221,10 @@ - + diff --git a/tools_scripts/twoClientsWithSameID.groovy b/tools_scripts/twoClientsWithSameID.groovy new file mode 100644 index 00000000..6655a990 --- /dev/null +++ b/tools_scripts/twoClientsWithSameID.groovy @@ -0,0 +1,34 @@ +@GrabResolver(name='Paho', root='https://repo.eclipse.org/content/repositories/paho-releases/') +@Grab(group='org.eclipse.paho', module='org.eclipse.paho.client.mqttv3', version='1.0.1', ext='jar') + + +import org.eclipse.paho.client.mqttv3.MqttClient +import org.eclipse.paho.client.mqttv3.MqttMessage +import org.eclipse.paho.client.mqttv3.MqttException +import org.eclipse.paho.client.mqttv3.persist.MqttDefaultFilePersistence + +String host = args[0] + +String tmpDir = System.getProperty("java.io.tmpdir") +MqttDefaultFilePersistence dataStore1 = new MqttDefaultFilePersistence(tmpDir + "/client1") +MqttClient client1 = new MqttClient("tcp://${host}:1883", "ConnectedClient", dataStore1) +client1.connect() +println "Client1 connected" +client1.subscribe("topic", 0) +println "Client1 subscribed to topic" + +sleep(500) + +//now connect a second client but with the same ID +MqttDefaultFilePersistence dataStore2 = new MqttDefaultFilePersistence(tmpDir + "/client2") +MqttClient client2 = new MqttClient("tcp://${host}:1883", "ConnectedClient", dataStore2) +client2.connect() +println "Client2 connected" +client2.subscribe("topic", 0) +println "Client2 subscribed to topic" + +client1.disconnect() +println "Client1 disconnected" + +client2.disconnect() +println "Client2 disconnected" \ No newline at end of file