Skip to content

Commit e7c1921

Browse files
committed
fix session invalidation prevention on duplicate state events
1 parent 47e2157 commit e7c1921

File tree

3 files changed

+5
-4
lines changed

3 files changed

+5
-4
lines changed

mautrix/client/client.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def __init__(
2828
) -> None:
2929
EncryptingAPI.__init__(self, *args, state_store=state_store, **kwargs)
3030
Syncer.__init__(self, sync_store)
31-
self.add_event_handler(EventType.ALL, self._update_state)
31+
self.add_event_handler(EventType.ALL, self._update_state, wait_sync=True)
3232

3333
async def _update_state(self, evt: Event) -> None:
3434
if not isinstance(evt, StateEvent) or not self.state_store:

mautrix/client/syncer.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ def dispatch_manual_event(
250250
tasks = []
251251
for handler, wait_sync in handlers:
252252
if force_synchronous or wait_sync:
253-
tasks.append(asyncio.create_task(self._catch_errors(handler, data)))
253+
tasks.append(self._catch_errors(handler, data))
254254
else:
255255
background_task.create(self._catch_errors(handler, data))
256256
return tasks
@@ -471,7 +471,8 @@ async def _start(self, filter_id: FilterID | None) -> None:
471471
start = time.monotonic()
472472
try:
473473
tasks = self.handle_sync(data)
474-
await asyncio.gather(*tasks)
474+
for task in tasks:
475+
await task
475476
except Exception:
476477
self.log.exception(f"Sync handling ({current_batch}) errored")
477478
else:

mautrix/crypto/machine.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def __init__(
106106
# self.client.add_event_handler(EventType.ROOM_KEY_WITHHELD, self.handle_room_key_withheld)
107107
# self.client.add_event_handler(EventType.ORG_MATRIX_ROOM_KEY_WITHHELD,
108108
# self.handle_room_key_withheld)
109-
self.client.add_event_handler(EventType.ROOM_MEMBER, self.handle_member_event)
109+
self.client.add_event_handler(EventType.ROOM_MEMBER, self.handle_member_event, wait_sync=True)
110110

111111
async def load(self) -> None:
112112
"""Load the Olm account into memory, or create one if the store doesn't have one stored."""

0 commit comments

Comments
 (0)