diff --git a/changelog.d/2175.bugfix b/changelog.d/2175.bugfix new file mode 100644 index 000000000..0f4a762c2 --- /dev/null +++ b/changelog.d/2175.bugfix @@ -0,0 +1 @@ +Fixed simplified sliding sync omitting device list updates for rooms with only timeline changes. Contributed by @eleboucher. diff --git a/src/api/client/sync/v5.rs b/src/api/client/sync/v5.rs index 3752af589..8ad9c6cc9 100644 --- a/src/api/client/sync/v5.rs +++ b/src/api/client/sync/v5.rs @@ -1432,12 +1432,10 @@ async fn collect_e2ee<'a, Rooms>( .await .is_ok(); - if let Some(since_shortstatehash) = since_shortstatehash { - // Skip if there are only timeline changes - if since_shortstatehash == current_shortstatehash { - continue; - } - + // Skip the state diff only: `room_keys_changed` below must run for every room. + if let Some(since_shortstatehash) = + since_shortstatehash.filter(|since| *since != current_shortstatehash) + { let since_encryption = services .rooms .state_accessor