From a0d3552900bb05dcfc4ee1d79f12f2d75a0f3de8 Mon Sep 17 00:00:00 2001 From: Roger Light Date: Mon, 26 Aug 2013 20:55:59 +0100 Subject: [PATCH] Improve handling of disconnect() with threaded mode. --- src/paho/mqtt/client.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/paho/mqtt/client.py b/src/paho/mqtt/client.py index c80fabd..9001bb5 100755 --- a/src/paho/mqtt/client.py +++ b/src/paho/mqtt/client.py @@ -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 -- 2.39.5