diff options
author | mathieui <mathieui@mathieui.net> | 2022-02-16 22:11:19 +0100 |
---|---|---|
committer | mathieui <mathieui@mathieui.net> | 2022-02-16 22:11:19 +0100 |
commit | d15a37e14653e9f86318bd2528523ec4f156e932 (patch) | |
tree | 5d704cb85e4ad9154160c694b463795ba3ee0e7c | |
parent | 98dba869c74f8f76d70d802ad13c0974905794e1 (diff) | |
download | slixmpp-d15a37e14653e9f86318bd2528523ec4f156e932.tar.gz slixmpp-d15a37e14653e9f86318bd2528523ec4f156e932.tar.bz2 slixmpp-d15a37e14653e9f86318bd2528523ec4f156e932.tar.xz slixmpp-d15a37e14653e9f86318bd2528523ec4f156e932.zip |
fix: allow cancelling the run_filters coroutine
otherwise it will leak forever into the event loop and generate
tracebacks when closing it
-rw-r--r-- | slixmpp/xmlstream/xmlstream.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/slixmpp/xmlstream/xmlstream.py b/slixmpp/xmlstream/xmlstream.py index 67238cc6..7b362203 100644 --- a/slixmpp/xmlstream/xmlstream.py +++ b/slixmpp/xmlstream/xmlstream.py @@ -1239,7 +1239,7 @@ class XMLStream(asyncio.BaseProtocol): else: self.send_raw(data) - async def run_filters(self) -> NoReturn: + async def run_filters(self) -> None: """ Background loop that processes stanzas to send. """ @@ -1295,6 +1295,9 @@ class XMLStream(asyncio.BaseProtocol): self.send_raw(data) except ContinueQueue as exc: log.debug('Stanza in send queue not sent: %s', exc) + except asyncio.CancelledError: + log.debug('Send coroutine received cancel(), stopping') + return except Exception: log.error('Exception raised in send queue:', exc_info=True) self.waiting_queue.task_done() |