From a3606d9e4d3dcdf404949c5293545ac0d9ee5803 Mon Sep 17 00:00:00 2001
From: Anton Ryzhov <anton@ryzhov.me>
Date: Thu, 20 Jun 2013 14:03:49 +0400
Subject: Fixed scheduler wait loop Do fastloop wait until task run time

---
 sleekxmpp/xmlstream/scheduler.py | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/sleekxmpp/xmlstream/scheduler.py b/sleekxmpp/xmlstream/scheduler.py
index 2efa7d1e..e6fae37a 100644
--- a/sleekxmpp/xmlstream/scheduler.py
+++ b/sleekxmpp/xmlstream/scheduler.py
@@ -157,16 +157,15 @@ class Scheduler(object):
                     if wait <= 0.0:
                         newtask = self.addq.get(False)
                     else:
-                        if wait > 3.0:
-                            wait = 3.0
                         newtask = None
-                        elapsed = 0
                         while self.run and \
                               not self.stop.is_set() and \
                               newtask is None and \
-                              elapsed < wait:
-                            newtask = self.addq.get(True, self.wait_timeout)
-                            elapsed += self.wait_timeout
+                              wait > 0:
+                            try:
+                                newtask = self.addq.get(True, min(wait, self.wait_timeout))
+                            except QueueEmpty:          # Nothing to add, nothing to do. Check run flags and continue waiting.
+                                wait -= self.wait_timeout
                 except QueueEmpty:                      # Time to run some tasks, and no new tasks to add.
                     self.schedule_lock.acquire()
                     # select only those tasks which are to be executed now
-- 
cgit v1.2.3