diff options
author | Erik Johnston <erik@matrix.org> | 2015-04-28 17:24:24 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2015-04-28 17:24:24 +0100 |
commit | 1783c7ca920cdacb22fa8536af03f42557af9d41 (patch) | |
tree | 79b1116644544a7dddd45776cac938c6fcc4c9b7 | |
parent | Fix typo (diff) | |
download | synapse-1783c7ca920cdacb22fa8536af03f42557af9d41.tar.xz |
Ensure we never miss any presence updates
-rw-r--r-- | synapse/handlers/presence.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py index 47cfe62c82..42cd528908 100644 --- a/synapse/handlers/presence.py +++ b/synapse/handlers/presence.py @@ -858,6 +858,9 @@ class PresenceEventSource(object): presence = self.hs.get_handlers().presence_handler cachemap = presence._user_cachemap + + max_serial = presence._user_cachemap_latest_serial + clock = self.clock latest_serial = 0 @@ -866,7 +869,7 @@ class PresenceEventSource(object): for observed_user in cachemap.keys(): cached = cachemap[observed_user] - if cached.serial <= from_key: + if cached.serial <= from_key or cached.serial > max_serial: continue if not (yield self.is_visible(observer_user, observed_user)): @@ -881,6 +884,9 @@ class PresenceEventSource(object): if serial < from_key: break + if serial > max_serial: + continue + latest_serial = max(latest_serial, serial) for u in user_ids: updates.append({ |