diff --git a/changelog.d/1445.bugfix b/changelog.d/1445.bugfix new file mode 100644 index 00000000..099c9579 --- /dev/null +++ b/changelog.d/1445.bugfix @@ -0,0 +1 @@ +Fixed sliding sync v5 list ranges always starting from 0, causing extra rooms to be unnecessarily processed and returned. Contributed by @0xnim diff --git a/src/api/client/sync/v5.rs b/src/api/client/sync/v5.rs index fc3b8055..ee098296 100644 --- a/src/api/client/sync/v5.rs +++ b/src/api/client/sync/v5.rs @@ -336,7 +336,9 @@ where let ranges = list.ranges.clone(); for mut range in ranges { - range.0 = uint!(0); + range.0 = range + .0 + .min(UInt::try_from(active_rooms.len()).unwrap_or(UInt::MAX)); range.1 = range.1.checked_add(uint!(1)).unwrap_or(range.1); range.1 = range .1