forked from MirrorHub/synapse
Drop PDUs of unknown rooms
When we receive events over federation we will need to know the room version to be able to correctly handle them, e.g. once we start changing event formats. Currently, we attempt to handle events in unknown rooms.
This commit is contained in:
parent
264cb14402
commit
9417986f77
1 changed files with 23 additions and 1 deletions
|
@ -162,8 +162,30 @@ class FederationServer(FederationBase):
|
||||||
p["age_ts"] = request_time - int(p["age"])
|
p["age_ts"] = request_time - int(p["age"])
|
||||||
del p["age"]
|
del p["age"]
|
||||||
|
|
||||||
|
# We try and pull out an event ID so that if latter checks fail we
|
||||||
|
# can log something sensible. We don't mandate an event ID here in
|
||||||
|
# case future event formats get rid of the key.
|
||||||
|
possible_event_id = p.get("event_id", "<Unknown>")
|
||||||
|
|
||||||
|
# Now we get the room ID so that we can check that we know the
|
||||||
|
# version of the room.
|
||||||
|
room_id = p.get("room_id")
|
||||||
|
if not room_id:
|
||||||
|
logger.info(
|
||||||
|
"Ignoring PDU as does not have a room_id. Event ID: %s",
|
||||||
|
possible_event_id,
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
|
||||||
|
try:
|
||||||
|
# In future we will actually use the room version to parse the
|
||||||
|
# PDU into an event.
|
||||||
|
yield self.store.get_room_version(room_id)
|
||||||
|
except NotFoundError:
|
||||||
|
logger.info("Ignoring PUD for unknown room_id: %s", room_id)
|
||||||
|
continue
|
||||||
|
|
||||||
event = event_from_pdu_json(p)
|
event = event_from_pdu_json(p)
|
||||||
room_id = event.room_id
|
|
||||||
pdus_by_room.setdefault(room_id, []).append(event)
|
pdus_by_room.setdefault(room_id, []).append(event)
|
||||||
|
|
||||||
pdu_results = {}
|
pdu_results = {}
|
||||||
|
|
Loading…
Reference in a new issue