diff options
author | Erik Johnston <erik@matrix.org> | 2015-02-16 14:27:40 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2015-02-16 14:27:40 +0000 |
commit | 91fc5eef1deb2f756d16f3d5ea20ede8d967f6df (patch) | |
tree | ba36c3a6c0dcfae853b01051f296ec2d5fd562f1 | |
parent | Don't return anything from _handle_new_pdu, since we ignore the return value ... (diff) | |
download | synapse-91fc5eef1deb2f756d16f3d5ea20ede8d967f6df.tar.xz |
Mark old events as outliers.
This is to fix the issue where if a remote server sends an event that references a really "old" event, then the local server will pull that in and send to all clients. We decide if an event is old if its depth is less than the minimum depth of the room.
Diffstat (limited to '')
-rw-r--r-- | synapse/federation/federation_server.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/synapse/federation/federation_server.py b/synapse/federation/federation_server.py index 7ca8d49c54..4391a60c02 100644 --- a/synapse/federation/federation_server.py +++ b/synapse/federation/federation_server.py @@ -366,7 +366,13 @@ class FederationServer(FederationBase): pdu.room_id, min_depth ) - if min_depth and pdu.depth > min_depth and max_recursion > 0: + if min_depth and pdu.depth < min_depth: + # This is so that we don't notify the user about this + # message, to work around the fact that some events will + # reference really really old events we really don't want to + # send to the clients. + pdu.internal_metadata.outlier = True + elif min_depth and pdu.depth > min_depth and max_recursion > 0: for event_id, hashes in pdu.prev_events: if event_id not in have_seen: logger.debug( |