Return a 404 rather than a 500 on rejoining empty rooms

Filter ourselves out of the server list before checking for an empty remote
host list, to fix 500 error

Fixes #2141
pull/3080/head
Richard van der Hoff 2018-04-09 12:56:22 +01:00
parent 15e8ed874f
commit f3ef60662f
1 changed files with 8 additions and 0 deletions

View File

@ -852,6 +852,14 @@ class RoomMemberMasterHandler(RoomMemberHandler):
def _remote_join(self, requester, remote_room_hosts, room_id, user, content):
"""Implements RoomMemberHandler._remote_join
"""
# filter ourselves out of remote_room_hosts: do_invite_join ignores it
# and if it is the only entry we'd like to return a 404 rather than a
# 500.
remote_room_hosts = [
host for host in remote_room_hosts if host != self.hs.hostname
]
if len(remote_room_hosts) == 0:
raise SynapseError(404, "No known servers")