Ensure state DAG rooms do not federate

- /createRoom requests forcibly set m.federate=false
- /send_join requests forcibly bail out for state DAG rooms.
This commit is contained in:
Kegan Dougal
2026-04-08 16:59:39 +02:00
parent 7ac0b7519f
commit 23caef31bc
2 changed files with 9 additions and 0 deletions
+5
View File
@@ -1108,6 +1108,11 @@ class FederationClient(FederationBase):
SynapseError: if the chosen remote server returns a 300/400 code, or
no servers successfully handle the request.
"""
# See related restriction in /createRoom requests in handlers/room.py
if room_version.msc4242_state_dags:
raise UnsupportedRoomVersionError(
"Homeserver does not support this room version over federation"
)
async def send_request(destination: str) -> SendJoinResult:
response = await self._do_send_join(
+4
View File
@@ -1237,6 +1237,10 @@ class RoomCreationHandler:
creation_content = config.get("creation_content", {})
# override any attempt to set room versions via the creation_content
creation_content["room_version"] = room_version.identifier
# We do not currently support federating state DAG rooms.
# See related restriction in /send_join requests in federation_client.py.
if room_version.msc4242_state_dags:
creation_content[EventContentFields.FEDERATE] = False
# trusted private chats have the invited users marked as additional creators
if (