diff options
author | Richard van der Hoff <richard@matrix.org> | 2017-04-03 15:58:07 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2017-04-03 15:58:07 +0100 |
commit | 30bcbf775abbf8582a6fac2ac1b23a220508ea62 (patch) | |
tree | bb4420ef8ab92202dff887e1a957c7caeeb9d4ee /synapse/federation/federation_server.py | |
parent | Bump version and changelog (diff) | |
download | synapse-30bcbf775abbf8582a6fac2ac1b23a220508ea62.tar.xz |
Accept join events from all servers
Make sure that we accept join events from any server, rather than just the origin server, to make the federation join dance work correctly. (Fixes #1893).
Diffstat (limited to 'synapse/federation/federation_server.py')
-rw-r--r-- | synapse/federation/federation_server.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/synapse/federation/federation_server.py b/synapse/federation/federation_server.py index 510a176821..bc20b9c201 100644 --- a/synapse/federation/federation_server.py +++ b/synapse/federation/federation_server.py @@ -146,11 +146,15 @@ class FederationServer(FederationBase): # check that it's actually being sent from a valid destination to # workaround bug #1753 in 0.18.5 and 0.18.6 if transaction.origin != get_domain_from_id(pdu.event_id): + # We continue to accept join events from any server; this is + # necessary for the federation join dance to work correctly. + # (When we join over federation, the "helper" server is + # responsible for sending out the join event, rather than the + # origin. See bug #1893). if not ( pdu.type == 'm.room.member' and pdu.content and - pdu.content.get("membership", None) == 'join' and - self.hs.is_mine_id(pdu.state_key) + pdu.content.get("membership", None) == 'join' ): logger.info( "Discarding PDU %s from invalid origin %s", |