Use directory server for room joins (#3899)

When we do a join, always try the server we used for the alias lookup first.

Fixes #2418
This commit is contained in:
Richard van der Hoff 2018-09-18 18:27:37 +01:00 committed by GitHub
parent 31c15dcb80
commit a219ce8726
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 0 deletions

1
changelog.d/3899.bugfix Normal file
View file

@ -0,0 +1 @@
When we join a room, always try the server we used for the alias lookup first, to avoid unresponsive and out-of-date servers.

View file

@ -583,6 +583,11 @@ class RoomMemberHandler(object):
room_id = mapping["room_id"] room_id = mapping["room_id"]
servers = mapping["servers"] servers = mapping["servers"]
# put the server which owns the alias at the front of the server list.
if room_alias.domain in servers:
servers.remove(room_alias.domain)
servers.insert(0, room_alias.domain)
defer.returnValue((RoomID.from_string(room_id), servers)) defer.returnValue((RoomID.from_string(room_id), servers))
@defer.inlineCallbacks @defer.inlineCallbacks