From 8edf9552b824f246c6b874e5e4a0aeb2705475eb 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 | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/service/rooms/event_handler/handle_outlier_pdu.rs b/src/service/rooms/event_handler/handle_outlier_pdu.rs index e9b4ec191..64d1a9acd 100644 --- a/src/service/rooms/event_handler/handle_outlier_pdu.rs +++ b/src/service/rooms/event_handler/handle_outlier_pdu.rs @@ -63,26 +63,19 @@ where 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!(