diff options
author | SpiritCroc <dev@spiritcroc.de> | 2024-03-21 19:43:07 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-21 18:43:07 +0000 |
commit | 9ad49e7ecf2fb489fb66445b9aed8489ee8f2a6d (patch) | |
tree | 65914a111b878f902eb3cb8cc2e5056a568bbd61 /synapse | |
parent | Fix reject knocks on deactivating account (#17010) (diff) | |
download | synapse-9ad49e7ecf2fb489fb66445b9aed8489ee8f2a6d.tar.xz |
Do not refuse to set read_marker if previous event_id is in wrong room (#16990)
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/handlers/read_marker.py | 4 | ||||
-rw-r--r-- | synapse/storage/databases/main/events_worker.py | 8 |
2 files changed, 7 insertions, 5 deletions
diff --git a/synapse/handlers/read_marker.py b/synapse/handlers/read_marker.py index 135a662267..fb39c8e04b 100644 --- a/synapse/handlers/read_marker.py +++ b/synapse/handlers/read_marker.py @@ -55,12 +55,12 @@ class ReadMarkerHandler: should_update = True # Get event ordering, this also ensures we know about the event - event_ordering = await self.store.get_event_ordering(event_id) + event_ordering = await self.store.get_event_ordering(event_id, room_id) if existing_read_marker: try: old_event_ordering = await self.store.get_event_ordering( - existing_read_marker["event_id"] + existing_read_marker["event_id"], room_id ) except SynapseError: # Old event no longer exists, assume new is ahead. This may diff --git a/synapse/storage/databases/main/events_worker.py b/synapse/storage/databases/main/events_worker.py index 81fccfbccb..e39d4b9624 100644 --- a/synapse/storage/databases/main/events_worker.py +++ b/synapse/storage/databases/main/events_worker.py @@ -1995,16 +1995,18 @@ class EventsWorkerStore(SQLBaseStore): return rows, to_token, True @cached(max_entries=5000) - async def get_event_ordering(self, event_id: str) -> Tuple[int, int]: + async def get_event_ordering(self, event_id: str, room_id: str) -> Tuple[int, int]: res = await self.db_pool.simple_select_one( table="events", retcols=["topological_ordering", "stream_ordering"], - keyvalues={"event_id": event_id}, + keyvalues={"event_id": event_id, "room_id": room_id}, allow_none=True, ) if not res: - raise SynapseError(404, "Could not find event %s" % (event_id,)) + raise SynapseError( + 404, "Could not find event %s in room %s" % (event_id, room_id) + ) return int(res[0]), int(res[1]) |