diff options
author | Erik Johnston <erik@matrix.org> | 2014-11-07 16:03:31 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2014-11-07 16:03:31 +0000 |
commit | 07286a73b179c7b3888f7cbf15dcf7c4f5a0c3a3 (patch) | |
tree | a9c62914ed34a232cdee3d25dcc83d8381d4057b /synapse/handlers/_base.py | |
parent | Add '/event_auth/' federation api (diff) | |
download | synapse-07286a73b179c7b3888f7cbf15dcf7c4f5a0c3a3.tar.xz |
Use current state to get room hosts, rather than querying the database
Diffstat (limited to 'synapse/handlers/_base.py')
-rw-r--r-- | synapse/handlers/_base.py | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/synapse/handlers/_base.py b/synapse/handlers/_base.py index 9dc2fc2e0f..07a8464107 100644 --- a/synapse/handlers/_base.py +++ b/synapse/handlers/_base.py @@ -18,6 +18,8 @@ from twisted.internet import defer from synapse.api.errors import LimitExceededError from synapse.util.async import run_on_reactor from synapse.crypto.event_signing import add_hashes_and_signatures +from synapse.api.events.room import RoomMemberEvent +from synapse.api.constants import Membership import logging @@ -95,9 +97,19 @@ class BaseHandler(object): destinations = set(extra_destinations) # Send a PDU to all hosts who have joined the room. - destinations.update((yield self.store.get_joined_hosts_for_room( - event.room_id - ))) + + for k, s in event.state_events.items(): + try: + if k[0] == RoomMemberEvent.TYPE: + if s.content["membership"] == Membership.JOIN: + destinations.add( + self.hs.parse_userid(s.state_key).domain + ) + except: + logger.warn( + "Failed to get destination from event %s", s.event_id + ) + event.destinations = list(destinations) self.notifier.on_new_room_event(event, extra_users=extra_users) |