From 0b5f6cb0a8e86c2e0b76d5f7ba1ae4f2ad801ebc Mon Sep 17 00:00:00 2001 From: mathieui Date: Fri, 30 Apr 2021 18:40:33 +0200 Subject: [PATCH] xmlstream: fix slow tasks scheduling - wrong attribute used - some mistakes in the slow tasks function --- slixmpp/xmlstream/xmlstream.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/slixmpp/xmlstream/xmlstream.py b/slixmpp/xmlstream/xmlstream.py index 7a94bf50..ab9b781d 100644 --- a/slixmpp/xmlstream/xmlstream.py +++ b/slixmpp/xmlstream/xmlstream.py @@ -1053,11 +1053,13 @@ class XMLStream(asyncio.BaseProtocol): """ data = await task self.__slow_tasks.remove(task) - for filter in self.__filters['out']: + if data is None: + return + for filter in self.__filters['out'][:]: if filter in already_used: continue if iscoroutinefunction(filter): - data = await task + data = await filter(data) else: data = filter(data) if data is None: @@ -1093,7 +1095,7 @@ class XMLStream(asyncio.BaseProtocol): timeout=1, ) if pending: - self.slow_tasks.append(task) + self.__slow_tasks.append(task) asyncio.ensure_future( self._continue_slow_send( task, @@ -1101,7 +1103,9 @@ class XMLStream(asyncio.BaseProtocol): ), loop=self.loop, ) - raise Exception("Slow coro, rescheduling") + raise ContinueQueue( + "Slow coroutine, rescheduling filters" + ) data = task.result() else: data = filter(data)