diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2020-02-24 15:46:41 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-24 15:46:41 +0000 |
commit | a301934f4610ffce490fbb925aaa898aac2829bc (patch) | |
tree | 434bea439924bc29295fe2fe0b5774af55dab19b /synapse/handlers | |
parent | Fix minor issues with email config (#6962) (diff) | |
download | synapse-a301934f4610ffce490fbb925aaa898aac2829bc.tar.xz |
Upsert room version when we join over federation (#6968)
This is intended as a precursor to storing room versions when we receive an invite over federation, but has the happy side-effect of fixing #3374 at last. In short: change the store_room with try/except to a proper upsert which updates the right columns.
Diffstat (limited to 'synapse/handlers')
-rw-r--r-- | synapse/handlers/federation.py | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index a689065f89..fb0a586eaa 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -1323,16 +1323,18 @@ class FederationHandler(BaseHandler): logger.debug("do_invite_join event: %s", event) - try: - await self.store.store_room( - room_id=room_id, - room_creator_user_id="", - is_public=False, - room_version=room_version_obj, - ) - except Exception: - # FIXME - pass + # if this is the first time we've joined this room, it's time to add + # a row to `rooms` with the correct room version. If there's already a + # row there, we should override it, since it may have been populated + # based on an invite request which lied about the room version. + # + # federation_client.send_join has already checked that the room + # version in the received create event is the same as room_version_obj, + # so we can rely on it now. + # + await self.store.upsert_room_on_join( + room_id=room_id, room_version=room_version_obj, + ) await self._persist_auth_tree( origin, auth_chain, state, event, room_version_obj |