mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-02-18 00:44:07 -05:00
Use current state to get room hosts, rather than querying the database
This commit is contained in:
parent
02c3b1c9e2
commit
07286a73b1
@ -18,6 +18,8 @@ from twisted.internet import defer
|
|||||||
from synapse.api.errors import LimitExceededError
|
from synapse.api.errors import LimitExceededError
|
||||||
from synapse.util.async import run_on_reactor
|
from synapse.util.async import run_on_reactor
|
||||||
from synapse.crypto.event_signing import add_hashes_and_signatures
|
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
|
import logging
|
||||||
|
|
||||||
@ -95,9 +97,19 @@ class BaseHandler(object):
|
|||||||
|
|
||||||
destinations = set(extra_destinations)
|
destinations = set(extra_destinations)
|
||||||
# Send a PDU to all hosts who have joined the room.
|
# 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)
|
event.destinations = list(destinations)
|
||||||
|
|
||||||
self.notifier.on_new_room_event(event, extra_users=extra_users)
|
self.notifier.on_new_room_event(event, extra_users=extra_users)
|
||||||
|
@ -376,10 +376,23 @@ class FederationHandler(BaseHandler):
|
|||||||
"user_joined_room", user=user, room_id=event.room_id
|
"user_joined_room", user=user, room_id=event.room_id
|
||||||
)
|
)
|
||||||
|
|
||||||
new_pdu = self.pdu_codec.pdu_from_event(event);
|
new_pdu = self.pdu_codec.pdu_from_event(event)
|
||||||
new_pdu.destinations = yield self.store.get_joined_hosts_for_room(
|
|
||||||
event.room_id
|
destinations = set()
|
||||||
|
|
||||||
|
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
|
||||||
|
)
|
||||||
|
|
||||||
|
new_pdu.destinations = list(destinations)
|
||||||
|
|
||||||
yield self.replication_layer.send_pdu(new_pdu)
|
yield self.replication_layer.send_pdu(new_pdu)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user