From ada0b3184b46a800be293c843fd6431e63403bf9 Mon Sep 17 00:00:00 2001 From: Ginger Date: Sat, 11 Jul 2026 10:39:30 -0400 Subject: [PATCH] fix: Properly sync newly created rooms --- changelog.d/+88fbb987.bugfix.md | 1 + src/api/client/sync/v3/joined.rs | 25 +++++++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) create mode 100644 changelog.d/+88fbb987.bugfix.md diff --git a/changelog.d/+88fbb987.bugfix.md b/changelog.d/+88fbb987.bugfix.md new file mode 100644 index 000000000..0fb997e3a --- /dev/null +++ b/changelog.d/+88fbb987.bugfix.md @@ -0,0 +1 @@ +Fixed newly created rooms failing to sync properly in clients using legacy sync. diff --git a/src/api/client/sync/v3/joined.rs b/src/api/client/sync/v3/joined.rs index d225a1e5c..20bcda294 100644 --- a/src/api/client/sync/v3/joined.rs +++ b/src/api/client/sync/v3/joined.rs @@ -381,16 +381,21 @@ async fn fetch_shortstatehashes( | Some((_, pdu_after_last_sync_end)) => { trace!(?pdu_after_last_sync_end.event_id, "pdu at last sync end"); - Some( - services - .rooms - .state_accessor - .pdu_shortstatehash(&pdu_after_last_sync_end.event_id) - .await - .map_err(|err| { - err!("Last sync end PDU has no shortstatehash: {err}") - }), - ) + if pdu_after_last_sync_end.kind == RoomCreate { + // Room create events have no previous state + None + } else { + Some( + services + .rooms + .state_accessor + .pdu_shortstatehash(&pdu_after_last_sync_end.event_id) + .await + .map_err(|err| { + err!("Last sync end PDU has no shortstatehash: {err}") + }), + ) + } }, | None => { // No events have been sent since the last sync, or we just joined this room