diff options
author | Patrick Cloke <clokep@users.noreply.github.com> | 2023-04-06 16:26:28 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-06 16:26:28 -0400 |
commit | d07d2558305057cba6a7e2cb7644c24cf2dcf9be (patch) | |
tree | 7d12d884981d2ffc275c5d10cf811606ce18ba97 /synapse/storage/databases | |
parent | Bump pyopenssl from 23.1.0 to 23.1.1 (#15373) (diff) | |
download | synapse-d07d2558305057cba6a7e2cb7644c24cf2dcf9be.tar.xz |
Implement MSC2175: remove the creator field from create events. (#15394)
Diffstat (limited to 'synapse/storage/databases')
-rw-r--r-- | synapse/storage/databases/main/room.py | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/synapse/storage/databases/main/room.py b/synapse/storage/databases/main/room.py index 3825bd6079..dd7dbb6901 100644 --- a/synapse/storage/databases/main/room.py +++ b/synapse/storage/databases/main/room.py @@ -1998,6 +1998,9 @@ class RoomBackgroundUpdateStore(SQLBaseStore): for room_id, event_json in room_id_to_create_event_results: event_dict = db_to_json(event_json) + # The creator property might not exist in newer room versions, but + # for those versions the creator column should be properly populate + # during room creation. creator = event_dict.get("content").get(EventContentFields.ROOM_CREATOR) self.db_pool.simple_update_txn( @@ -2132,12 +2135,16 @@ class RoomStore(RoomBackgroundUpdateStore, RoomWorkerStore): # invalid, and it would fail auth checks anyway. raise StoreError(400, "No create event in state") - room_creator = create_event.content.get(EventContentFields.ROOM_CREATOR) + # Before MSC2175, the room creator was a separate field. + if not room_version.msc2175_implicit_room_creator: + room_creator = create_event.content.get(EventContentFields.ROOM_CREATOR) - if not isinstance(room_creator, str): - # If the create event does not have a creator then the room is - # invalid, and it would fail auth checks anyway. - raise StoreError(400, "No creator defined on the create event") + if not isinstance(room_creator, str): + # If the create event does not have a creator then the room is + # invalid, and it would fail auth checks anyway. + raise StoreError(400, "No creator defined on the create event") + else: + room_creator = create_event.sender await self.db_pool.simple_upsert( desc="upsert_room_on_join", |