From ee669251c19739eec36ec0c5cac2a9fda2d3bdaf Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Wed, 27 May 2026 11:59:49 +0100 Subject: [PATCH] Clean up .sticky_duration() --- rust/src/events/mod.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rust/src/events/mod.rs b/rust/src/events/mod.rs index 0614ac7ffb..08a6432f00 100644 --- a/rust/src/events/mod.rs +++ b/rust/src/events/mod.rs @@ -353,10 +353,10 @@ impl Event { _ => return None, }; - let duration_ms = match sticky_obj.get("duration_ms") { - Some(serde_json::Value::Number(num)) if num.is_u64() => num.as_u64().unwrap(), - _ => return None, - }; + // Check for a valid duration field. The MSC requires `duration_ms` to + // be a non-negative integer. If it's missing or invalid, we treat the + // event as non-sticky by returning `None`. + let duration_ms = sticky_obj.get("duration_ms")?.as_u64()?; let duration = SynapseDuration::from_milliseconds(duration_ms);