diff options
author | Richard van der Hoff <github@rvanderhoff.org.uk> | 2017-04-03 16:17:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-03 16:17:17 +0100 |
commit | ac63b92b6413ccb9c79cc88c906c9638605d8bc6 (patch) | |
tree | bb4420ef8ab92202dff887e1a957c7caeeb9d4ee /synapse/handlers | |
parent | Bump version and changelog (diff) | |
parent | Accept join events from all servers (diff) | |
download | synapse-ac63b92b6413ccb9c79cc88c906c9638605d8bc6.tar.xz |
Merge pull request #2094 from matrix-org/rav/fix_federation_join
Accept join events from all servers
Diffstat (limited to 'synapse/handlers')
-rw-r--r-- | synapse/handlers/federation.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index 888dd01240..2ecc0087b8 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -1004,9 +1004,19 @@ class FederationHandler(BaseHandler): ) event.internal_metadata.outlier = False - # Send this event on behalf of the origin server since they may not - # have an up to data view of the state of the room at this event so - # will not know which servers to send the event to. + # Send this event on behalf of the origin server. + # + # The reasons we have the destination server rather than the origin + # server send it are slightly mysterious: the origin server should have + # all the neccessary state once it gets the response to the send_join, + # so it could send the event itself if it wanted to. It may be that + # doing it this way reduces failure modes, or avoids certain attacks + # where a new server selectively tells a subset of the federation that + # it has joined. + # + # The fact is that, as of the current writing, Synapse doesn't send out + # the join event over federation after joining, and changing it now + # would introduce the danger of backwards-compatibility problems. event.internal_metadata.send_on_behalf_of = origin context, event_stream_id, max_stream_id = yield self._handle_new_event( |