From 69e3e0bc5b6909c199078c6ab2b2f059a2b53176 Mon Sep 17 00:00:00 2001 From: shipmints Date: Mon, 17 Feb 2020 14:56:59 -0500 Subject: [PATCH] Slight enhancement to client_tasks.pop() in cancel tasks and disconnect logic. --- hbmqtt/client.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hbmqtt/client.py b/hbmqtt/client.py index 7eb8f8a..4df0526 100644 --- a/hbmqtt/client.py +++ b/hbmqtt/client.py @@ -182,7 +182,7 @@ class MQTTClient: :return: """ try: - while True: + while self.client_tasks: task = self.client_tasks.pop() task.cancel() except IndexError as err: @@ -349,16 +349,16 @@ class MQTTClient: self.client_tasks.append(deliver_task) self.logger.debug("Waiting message delivery") done, pending = yield from asyncio.wait([deliver_task], loop=self._loop, return_when=asyncio.FIRST_EXCEPTION, timeout=timeout) + if self.client_tasks: + self.client_tasks.pop() if deliver_task in done: if deliver_task.exception() is not None: # deliver_task raised an exception, pass it on to our caller raise deliver_task.exception() - self.client_tasks.pop() return deliver_task.result() else: #timeout occured before message received deliver_task.cancel() - self.client_tasks.pop() raise asyncio.TimeoutError @asyncio.coroutine