From cedefe70bfbaea7b75b91bf33c467a2c478adec0 Mon Sep 17 00:00:00 2001 From: Maurus Decimus <11444311+mdecimus@users.noreply.github.com> Date: Thu, 23 Apr 2026 16:40:20 +0200 Subject: [PATCH] Fix JMAP sorting order issues when emails lack `receivedAt` headers --- CHANGELOG.md | 1 + crates/store/src/search/local.rs | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30ae3da3..f3d6b479 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ This version includes **multiple breaking changes**. If you are upgrading from v ## Fixed - JMAP: - Invalid `receivedAt` headers after importing (#2939). + - Sorting order issues when emails lack `receivedAt` headers. - Reverse proxy issues. - OSS builds. - DNS Updater: diff --git a/crates/store/src/search/local.rs b/crates/store/src/search/local.rs index f3cb0114..f470238f 100644 --- a/crates/store/src/search/local.rs +++ b/crates/store/src/search/local.rs @@ -204,11 +204,14 @@ impl QueryResults { !set.contains(*b) as u32, *ascending, ), - SearchComparator::SortedSet { set, ascending } => ( - *set.get(a).unwrap_or(&u32::MAX), - *set.get(b).unwrap_or(&u32::MAX), - *ascending, - ), + SearchComparator::SortedSet { set, ascending } => { + let missing = if *ascending { u32::MAX } else { 0 }; + ( + *set.get(a).unwrap_or(&missing), + *set.get(b).unwrap_or(&missing), + *ascending, + ) + } SearchComparator::Field { .. } => continue, };