From 32383d68508699c8c2f5c3cf84349e6be03f5ee5 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Wed, 18 Nov 2020 01:25:43 +0200 Subject: [PATCH] Allow setting new room ID with body parameter --- synapse/handlers/room.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py index e73031475..597703f2f 100644 --- a/synapse/handlers/room.py +++ b/synapse/handlers/room.py @@ -677,9 +677,21 @@ class RoomCreationHandler(BaseHandler): visibility = config.get("visibility", None) is_public = visibility == "public" - room_id = await self._generate_room_id( - creator_id=user_id, is_public=is_public, room_version=room_version, - ) + if "room_id" in config: + room_id = config["room_id"] + try: + await self.store.store_room( + room_id=room_id, + room_creator_user_id=user_id, + is_public=is_public, + room_version=room_version, + ) + except StoreError: + raise SynapseError(409, "Room ID already in use", errcode="M_CONFLICT") + else: + room_id = await self._generate_room_id( + creator_id=user_id, is_public=is_public, room_version=room_version, + ) # Check whether this visibility value is blocked by a third party module allowed_by_third_party_rules = await (