]> git.michaelhowe.org Git - packages/p/paho-mqtt.git/commitdiff
Improve handling of disconnect() with threaded mode.
authorRoger Light <roger@atchoo.org>
Mon, 26 Aug 2013 19:55:59 +0000 (20:55 +0100)
committerRoger Light <roger@atchoo.org>
Mon, 3 Feb 2014 21:20:21 +0000 (21:20 +0000)
src/paho/mqtt/client.py

index c80fabd924a76481ebb6ddad964728f9b40cadf0..9001bb56ca7ba8d0ca4d933d1b3ea6974f8769c5 100755 (executable)
@@ -780,13 +780,13 @@ class Client:
 
     def disconnect(self):
         """Disconnect a connected client from the broker."""
-        if self._sock == None and self._ssl == None:
-            return MQTT_ERR_NO_CONN
-
         self._state_mutex.acquire()
         self._state = mqtt_cs_disconnecting
         self._state_mutex.release()
 
+        if self._sock == None and self._ssl == None:
+            return MQTT_ERR_NO_CONN
+
         return self._send_disconnect()
 
     def subscribe(self, topic, qos=0):
@@ -1031,6 +1031,15 @@ class Client:
             else:
                 self._state_mutex.release()
                 time.sleep(1)
+
+                self._state_mutex.acquire()
+                if self._state == mosq_cs_disconnecting:
+                    run = False
+                    self._state_mutex.release()
+                else:
+                    self._state_mutex.release()
+                    self.reconnect()
+
                 self.reconnect()
         return rc