diff options
author | Erik Johnston <erik@matrix.org> | 2014-08-28 16:52:46 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2014-08-28 16:52:46 +0100 |
commit | 54d0a755734f71e38c5cdc0e922422cc4d31ad74 (patch) | |
tree | 4d0256be69f304553d0efaa71ec50498f3821683 /synapse/handlers/presence.py | |
parent | Up timeout to 10 minutes (diff) | |
parent | Only send presence "poll"/"unpoll" EDUs when changing from/to zero remotes (diff) | |
download | synapse-54d0a755734f71e38c5cdc0e922422cc4d31ad74.tar.xz |
Merge branch 'develop' of github.com:matrix-org/synapse into presence_logging
Conflicts: synapse/handlers/presence.py
Diffstat (limited to 'synapse/handlers/presence.py')
-rw-r--r-- | synapse/handlers/presence.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py index a125ea6c10..414a5b7bd5 100644 --- a/synapse/handlers/presence.py +++ b/synapse/handlers/presence.py @@ -451,16 +451,22 @@ class PresenceHandler(BaseHandler): ) def _start_polling_remote(self, user, domain, remoteusers): + to_poll = set() + for u in remoteusers: if u not in self._remote_recvmap: self._remote_recvmap[u] = set() + to_poll.add(u) self._remote_recvmap[u].add(user) + if not to_poll: + return defer.succeed(None) + return self.federation.send_edu( destination=domain, edu_type="m.presence", - content={"poll": [u.to_string() for u in remoteusers]} + content={"poll": [u.to_string() for u in to_poll]} ) @trace_function @@ -505,16 +511,22 @@ class PresenceHandler(BaseHandler): @trace_function def _stop_polling_remote(self, user, domain, remoteusers): + to_unpoll = set() + for u in remoteusers: self._remote_recvmap[u].remove(user) if not self._remote_recvmap[u]: del self._remote_recvmap[u] + to_unpoll.add(u) + + if not to_unpoll: + return defer.succeed(None) return self.federation.send_edu( destination=domain, edu_type="m.presence", - content={"unpoll": [u.to_string() for u in remoteusers]} + content={"unpoll": [u.to_string() for u in to_unpoll]} ) @defer.inlineCallbacks |