diff --git a/src/service/rooms/event_handler/handle_outlier_pdu.rs b/src/service/rooms/event_handler/handle_outlier_pdu.rs index 97e7ceb31..5431b490c 100644 --- a/src/service/rooms/event_handler/handle_outlier_pdu.rs +++ b/src/service/rooms/event_handler/handle_outlier_pdu.rs @@ -81,6 +81,14 @@ impl super::Service { CanonicalJsonValue::String(event_id.as_str().to_owned()), ); + if let Ok(pdu_event) = self.services.timeline.get_pdu(event_id).await { + debug!( + "Already have event {event_id} as an outlier or timeline event, not \ + re-processing" + ); + return Ok((pdu_event, incoming_pdu)); + } + let pdu_event = serde_json::from_value::( serde_json::to_value(&incoming_pdu).expect("CanonicalJsonObj is a valid JsonValue"), )