From b619eae9ef88520b9c9652ce5f580f6f1b3adef1 Mon Sep 17 00:00:00 2001 From: timedout Date: Wed, 27 May 2026 00:51:12 +0100 Subject: [PATCH] fix: Don't lie about using already-known content --- .../rooms/event_handler/handle_outlier_pdu.rs | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/service/rooms/event_handler/handle_outlier_pdu.rs b/src/service/rooms/event_handler/handle_outlier_pdu.rs index c4d912cd9..332de86c8 100644 --- a/src/service/rooms/event_handler/handle_outlier_pdu.rs +++ b/src/service/rooms/event_handler/handle_outlier_pdu.rs @@ -65,27 +65,19 @@ impl super::Service { value }, | Ok(ruma::signatures::Verified::Signatures) => { - debug_info!("Calculated hash does not match (redaction): {event_id}"); - let mut obj = match redact(value, &room_version_rules.redaction, None) { - | Ok(obj) => obj, - | Err(e) => - return Err!(Request(BadJson("Failed to redact {event_id}: {e}"))), - }; - if let Ok(pdu_event) = self.services.timeline.get_pdu(event_id).await { debug!( "Received a redacted copy of {event_id}, but we already knew about it. \ Re-using known content instead." ); - obj.insert( - "event_id".to_owned(), - CanonicalJsonValue::String(event_id.as_str().to_owned()), - ); check_room_id(room_id, &pdu_event)?; + let obj = pdu_event.to_canonical_object(); return Ok((pdu_event, obj)); } - obj + debug_info!("Calculated hash does not match (redaction): {event_id}"); + redact(value, &room_version_rules.redaction, None) + .map_err(|e| err!(Request(BadJson("Failed to redact {event_id}: {e}"))))? }, | Err(e) => { return Err!(Request(Forbidden(debug_error!(