]> git.michaelhowe.org Git - packages/p/paho-mqtt.git/commitdiff
Fix potential lockup when publishing from on_publish callback.
authorRoger A. Light <roger@atchoo.org>
Sat, 17 May 2014 19:56:10 +0000 (20:56 +0100)
committerRoger A. Light <roger@atchoo.org>
Sat, 17 May 2014 19:56:10 +0000 (20:56 +0100)
Change-Id: I5890f79f7ecfc06be9d959456545d7733c604aa2

src/paho/mqtt/client.py

index 0e421d5f893e181ce801728db4849ad7de408f88..e2f9c201e95639748e2af43e3e5af4f62786fcd1 100755 (executable)
@@ -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)