Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/python-nbxmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlovetox <philipp@hoerist.com>2020-03-26 01:20:33 +0300
committerlovetox <philipp@hoerist.com>2020-03-26 01:20:33 +0300
commit744b7baa7af858d5b312ee74ac52951c51d03ed3 (patch)
tree171ea48c0fc651276d586ae6f287413200cc707d
parent452f5eabdc9d391a9cde7f19f178157e1c05751f (diff)
Dispatcher: Refactor IQ timeout code
-rw-r--r--nbxmpp/dispatcher.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/nbxmpp/dispatcher.py b/nbxmpp/dispatcher.py
index 33642e1..2e72a33 100644
--- a/nbxmpp/dispatcher.py
+++ b/nbxmpp/dispatcher.py
@@ -459,23 +459,28 @@ class StanzaDispatcher(Observable):
def add_callback_for_id(self, id_, func, timeout, user_data):
if timeout is not None and self._timeout_id is None:
- self._log.info('Add timeout source')
+ self._log.info('Add timeout check')
self._timeout_id = GLib.timeout_add_seconds(
1, self._timeout_check)
timeout = time.monotonic() + timeout
self._id_callbacks[id_] = (func, timeout, user_data)
def _timeout_check(self):
- self._log.info('Run timeout check')
- if not self._id_callbacks:
- self._log.info('Remove timeout source, no callbacks scheduled')
+ timeouts = {}
+ for id_, data in self._id_callbacks.items():
+ if data[1] is not None:
+ timeouts[id_] = data
+
+ if not timeouts:
+ self._log.info('Remove timeout check, no timeouts scheduled')
self._timeout_id = None
return False
- for id_ in list(self._id_callbacks.keys()):
- func, timeout, user_data = self._id_callbacks.get(id_)
+ for id_, data in timeouts.items():
+ func, timeout, user_data = data
if timeout is None:
continue
+ has_timeout = True
if user_data is None:
user_data = {}