Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 3dd43e5

Browse files
committed
Handle outliers in /federation/v1/event
1 parent 0f1b943 commit 3dd43e5

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

synapse/handlers/federation.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,19 +1029,24 @@ async def get_persisted_pdu(
10291029
event_id, allow_none=True, allow_rejected=True
10301030
)
10311031

1032-
if event:
1033-
in_room = await self._event_auth_handler.check_host_in_room(
1034-
event.room_id, origin
1035-
)
1036-
if not in_room:
1037-
raise AuthError(403, "Host not in room.")
1032+
if not event:
1033+
return None
10381034

1039-
events = await filter_events_for_server(self.storage, origin, [event])
1040-
event = events[0]
1041-
return event
1042-
else:
1035+
if event.internal_metadata.is_outlier():
1036+
# we can't tell if the requesting server can see this event, since
1037+
# we don't have the state at that point. Return a 404.
10431038
return None
10441039

1040+
in_room = await self._event_auth_handler.check_host_in_room(
1041+
event.room_id, origin
1042+
)
1043+
if not in_room:
1044+
raise AuthError(403, "Host not in room.")
1045+
1046+
events = await filter_events_for_server(self.storage, origin, [event])
1047+
event = events[0]
1048+
return event
1049+
10451050
async def on_get_missing_events(
10461051
self,
10471052
origin: str,

0 commit comments

Comments
 (0)