Merge pull request #589 from matrix-org/erikj/presence

Only send presence updates to remote hosts if user is ours
This commit is contained in:
Erik Johnston 2016-02-22 13:18:06 +00:00
commit 60bec24083

View File

@ -428,13 +428,21 @@ class PresenceHandler(BaseHandler):
hosts_to_states = {} hosts_to_states = {}
for room_id, states in room_ids_to_states.items(): for room_id, states in room_ids_to_states.items():
local_states = filter(lambda s: self.hs.is_mine_id(s.user_id), states)
if not local_states:
continue
hosts = yield self.store.get_joined_hosts_for_room(room_id) hosts = yield self.store.get_joined_hosts_for_room(room_id)
for host in hosts: for host in hosts:
hosts_to_states.setdefault(host, []).extend(states) hosts_to_states.setdefault(host, []).extend(local_states)
for user_id, states in users_to_states.items(): for user_id, states in users_to_states.items():
local_states = filter(lambda s: self.hs.is_mine_id(s.user_id), states)
if not local_states:
continue
host = UserID.from_string(user_id).domain host = UserID.from_string(user_id).domain
hosts_to_states.setdefault(host, []).extend(states) hosts_to_states.setdefault(host, []).extend(local_states)
# TODO: de-dup hosts_to_states, as a single host might have multiple # TODO: de-dup hosts_to_states, as a single host might have multiple
# of same presence # of same presence