diff --git a/src/service/rooms/event_handler/handle_incoming_pdu.rs b/src/service/rooms/event_handler/handle_incoming_pdu.rs index ecb2fc17f..204dfa715 100644 --- a/src/service/rooms/event_handler/handle_incoming_pdu.rs +++ b/src/service/rooms/event_handler/handle_incoming_pdu.rs @@ -215,6 +215,17 @@ pub async fn handle_incoming_pdu<'a>( .get_room_create_event(room_id) .await; + let start_time = Instant::now(); + self.federation_handletime + .write() + .insert(room_id.into(), (event_id.to_owned(), start_time)); + + defer! {{ + self.federation_handletime + .write() + .remove(room_id); + }}; + let (incoming_pdu, val) = self .handle_outlier_pdu(origin, create_event, event_id, room_id, value, false) .await?; @@ -281,17 +292,6 @@ pub async fn handle_incoming_pdu<'a>( .await?; // Done with prev events, now handling the incoming event - let start_time = Instant::now(); - self.federation_handletime - .write() - .insert(room_id.into(), (event_id.to_owned(), start_time)); - - defer! {{ - self.federation_handletime - .write() - .remove(room_id); - }}; - self.upgrade_outlier_to_timeline_pdu(incoming_pdu, val, create_event, origin, room_id) .boxed() .await diff --git a/src/service/rooms/event_handler/upgrade_outlier_pdu.rs b/src/service/rooms/event_handler/upgrade_outlier_pdu.rs index bc570e764..38fc7c452 100644 --- a/src/service/rooms/event_handler/upgrade_outlier_pdu.rs +++ b/src/service/rooms/event_handler/upgrade_outlier_pdu.rs @@ -1,7 +1,7 @@ use std::{borrow::Borrow, collections::BTreeMap, sync::Arc, time::Instant}; use conduwuit::{ - Err, Result, debug, debug_info, err, implement, is_equal_to, + Err, Result, debug, debug_info, debug_warn, err, implement, is_equal_to, matrix::{Event, EventTypeExt, PduEvent, StateKey, state_res}, trace, utils::{ @@ -50,10 +50,10 @@ pub(super) async fn upgrade_outlier_to_timeline_pdu( .pdu_metadata .is_event_soft_failed(incoming_pdu.event_id()) ); - if rejected || soft_failed { - // TODO: debug_warn instead of warn - warn!(%rejected, %soft_failed, "Event is not accepted"); - return Err!(Request(InvalidParam("Event has been rejected or soft-failed"))); + if rejected { + return Err!(Request(InvalidParam("Event has been rejected"))); + } else if soft_failed { + return Err!(Request(InvalidParam("Event has been soft-failed"))); } // If any of the auth events are rejected, this event is also rejected. @@ -376,15 +376,19 @@ pub(super) async fn upgrade_outlier_to_timeline_pdu( self.services .pdu_metadata .mark_event_soft_failed(incoming_pdu.event_id()); - return Err!(Request(InvalidParam("Event has been soft failed"))); + debug_warn!( + elapsed = ?timer.elapsed(), + "Event has been soft-failed", + ); + } else { + debug_info!( + elapsed = ?timer.elapsed(), + "Accepted", + ); } // Event has passed all auth/stateres checks drop(state_lock); - debug_info!( - elapsed = ?timer.elapsed(), - "Accepted", - ); Ok(pdu_id) }