|
@@ -1288,6 +1288,11 @@ class FederationHandler(BaseHandler):
|
|
|
def get_state_for_pdu(self, room_id, event_id):
|
|
|
"""Returns the state at the event. i.e. not including said event.
|
|
|
"""
|
|
|
+
|
|
|
+ event = yield self.store.get_event(
|
|
|
+ event_id, allow_none=False, check_room_id=room_id,
|
|
|
+ )
|
|
|
+
|
|
|
state_groups = yield self.store.get_state_groups(
|
|
|
room_id, [event_id]
|
|
|
)
|
|
@@ -1298,8 +1303,7 @@ class FederationHandler(BaseHandler):
|
|
|
(e.type, e.state_key): e for e in state
|
|
|
}
|
|
|
|
|
|
- event = yield self.store.get_event(event_id)
|
|
|
- if event and event.is_state():
|
|
|
+ if event.is_state():
|
|
|
# Get previous state
|
|
|
if "replaces_state" in event.unsigned:
|
|
|
prev_id = event.unsigned["replaces_state"]
|
|
@@ -1318,6 +1322,10 @@ class FederationHandler(BaseHandler):
|
|
|
def get_state_ids_for_pdu(self, room_id, event_id):
|
|
|
"""Returns the state at the event. i.e. not including said event.
|
|
|
"""
|
|
|
+ event = yield self.store.get_event(
|
|
|
+ event_id, allow_none=False, check_room_id=room_id,
|
|
|
+ )
|
|
|
+
|
|
|
state_groups = yield self.store.get_state_groups_ids(
|
|
|
room_id, [event_id]
|
|
|
)
|
|
@@ -1326,8 +1334,7 @@ class FederationHandler(BaseHandler):
|
|
|
_, state = state_groups.items().pop()
|
|
|
results = state
|
|
|
|
|
|
- event = yield self.store.get_event(event_id)
|
|
|
- if event and event.is_state():
|
|
|
+ if event.is_state():
|
|
|
# Get previous state
|
|
|
if "replaces_state" in event.unsigned:
|
|
|
prev_id = event.unsigned["replaces_state"]
|
|
@@ -1613,8 +1620,19 @@ class FederationHandler(BaseHandler):
|
|
|
defer.returnValue(context)
|
|
|
|
|
|
@defer.inlineCallbacks
|
|
|
- def on_query_auth(self, origin, event_id, remote_auth_chain, rejects,
|
|
|
+ def on_query_auth(self, origin, event_id, room_id, remote_auth_chain, rejects,
|
|
|
missing):
|
|
|
+ in_room = yield self.auth.check_host_in_room(
|
|
|
+ room_id,
|
|
|
+ origin
|
|
|
+ )
|
|
|
+ if not in_room:
|
|
|
+ raise AuthError(403, "Host not in room.")
|
|
|
+
|
|
|
+ event = yield self.store.get_event(
|
|
|
+ event_id, allow_none=False, check_room_id=room_id
|
|
|
+ )
|
|
|
+
|
|
|
# Just go through and process each event in `remote_auth_chain`. We
|
|
|
# don't want to fall into the trap of `missing` being wrong.
|
|
|
for e in remote_auth_chain:
|
|
@@ -1624,7 +1642,6 @@ class FederationHandler(BaseHandler):
|
|
|
pass
|
|
|
|
|
|
# Now get the current auth_chain for the event.
|
|
|
- event = yield self.store.get_event(event_id)
|
|
|
local_auth_chain = yield self.store.get_auth_chain(
|
|
|
[auth_id for auth_id, _ in event.auth_events],
|
|
|
include_given=True
|