mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-09 17:12:11 -04:00
Faster joins: don't stall when a user joins during a fast join (#14606)
Fixes #12801. Complement tests are at https://github.com/matrix-org/complement/pull/567. Avoid blocking on full state when handling a subsequent join into a partial state room. Also always perform a remote join into partial state rooms, since we do not know whether the joining user has been banned and want to avoid leaking history to banned users. Signed-off-by: Mathieu Velten <mathieuv@matrix.org> Co-authored-by: Sean Quah <seanq@matrix.org> Co-authored-by: David Robertson <davidr@element.io>
This commit is contained in:
parent
d0c713cc85
commit
6cddf24e36
12 changed files with 196 additions and 94 deletions
|
@ -15,8 +15,7 @@
|
|||
import logging
|
||||
from typing import TYPE_CHECKING, List, Optional, Tuple
|
||||
|
||||
from synapse.api.errors import SynapseError
|
||||
from synapse.handlers.room_member import RoomMemberHandler
|
||||
from synapse.handlers.room_member import NoKnownServersError, RoomMemberHandler
|
||||
from synapse.replication.http.membership import (
|
||||
ReplicationRemoteJoinRestServlet as ReplRemoteJoin,
|
||||
ReplicationRemoteKnockRestServlet as ReplRemoteKnock,
|
||||
|
@ -52,7 +51,7 @@ class RoomMemberWorkerHandler(RoomMemberHandler):
|
|||
) -> Tuple[str, int]:
|
||||
"""Implements RoomMemberHandler._remote_join"""
|
||||
if len(remote_room_hosts) == 0:
|
||||
raise SynapseError(404, "No known servers")
|
||||
raise NoKnownServersError()
|
||||
|
||||
ret = await self._remote_join_client(
|
||||
requester=requester,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue