From f004c08b1e771ef75db19b4236b90634791e713f Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Sat, 17 May 2014 20:56:10 +0100 Subject: [PATCH] Fix potential lockup when publishing from on_publish callback. Change-Id: I5890f79f7ecfc06be9d959456545d7733c604aa2 --- src/paho/mqtt/client.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/paho/mqtt/client.py b/src/paho/mqtt/client.py index 0e421d5..e2f9c20 100755 --- a/src/paho/mqtt/client.py +++ b/src/paho/mqtt/client.py @@ -1460,9 +1460,11 @@ class Client(object): if (packet['command'] & 0xF0) == PUBLISH and packet['qos'] == 0: self._callback_mutex.acquire() if self.on_publish: + self._out_message_mutex.release() self._in_callback = True self.on_publish(self, self._userdata, packet['mid']) self._in_callback = False + self._out_message_mutex.acquire() self._callback_mutex.release() @@ -2091,9 +2093,11 @@ class Client(object): # Only inform the client the message has been sent once. self._callback_mutex.acquire() if self.on_publish: + self._out_message_mutex.release() self._in_callback = True self.on_publish(self, self._userdata, mid) self._in_callback = False + self._out_message_mutex.acquire() self._callback_mutex.release() self._out_messages.pop(i) -- 2.39.5