summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
Diffstat (limited to 'synapse')
-rw-r--r--synapse/notifier.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/synapse/notifier.py b/synapse/notifier.py
index 053475a2f5..5475ee36ca 100644
--- a/synapse/notifier.py
+++ b/synapse/notifier.py
@@ -305,10 +305,13 @@ class Notifier(object):
 
         result = None
         if timeout:
-            listener = None
-            timer = self.clock.call_later(
-                timeout/1000., lambda: listener.deferred.cancel()
-            )
+            listener = None  # Will be set to a _NotificationListener that
+                             # we'll be waiting on. Allows us to cancel it.
+
+            def timed_out():
+                if listener:
+                    listener.deferred.cancel()
+            timer = self.clock.call_later(timeout/1000., timed_out)
 
             prev_token = from_token
             while not result:
@@ -319,6 +322,10 @@ class Notifier(object):
                     if result:
                         break
 
+                    # Now we wait for the _NotifierUserStream to be told there
+                    # is a new token.
+                    # We need to supply the token we supplied to callback so
+                    # that we don't miss any current_token updates.
                     prev_token = current_token
                     listener = user_stream.new_listener(prev_token)
                     yield listener.deferred