diff --git a/src/core/config/mod.rs b/src/core/config/mod.rs index a58bcfe5..00623f44 100644 --- a/src/core/config/mod.rs +++ b/src/core/config/mod.rs @@ -2096,8 +2096,7 @@ fn default_servernameevent_data_cache_capacity() -> u32 { fn default_stateinfo_cache_capacity() -> u32 { parallelism_scaled_u32(500).clamp(100, 12000) } -fn default_roomid_spacehierarchy_cache_capacity() -> u32 { - parallelism_scaled_u32(500).clamp(100, 12000) } +fn default_roomid_spacehierarchy_cache_capacity() -> u32 { parallelism_scaled_u32(1000) } fn default_dns_cache_entries() -> u32 { 327680 } diff --git a/src/core/matrix/state_res/event_auth.rs b/src/core/matrix/state_res/event_auth.rs index 0726b00a..759ab5cb 100644 --- a/src/core/matrix/state_res/event_auth.rs +++ b/src/core/matrix/state_res/event_auth.rs @@ -13,7 +13,6 @@ use ruma::{ power_levels::RoomPowerLevelsEventContent, third_party_invite::RoomThirdPartyInviteEventContent, }, - EventId, int, serde::{Base64, Raw}, }; @@ -22,6 +21,7 @@ use serde::{ de::{Error as _, IgnoredAny}, }; use serde_json::{from_str as from_json_str, value::RawValue as RawJsonValue}; + use super::{ Error, Event, Result, StateEventType, StateKey, TimelineEventType, power_levels::{ @@ -217,9 +217,8 @@ where } /* - // TODO: In the past this code was commented as it caused problems with Synapse. This is no - // longer the case. This needs to be implemented. - // See also: https://github.com/ruma/ruma/pull/2064 + // TODO: In the past this code caused problems federating with synapse, maybe this has been + // resolved already. Needs testing. // // 2. Reject if auth_events // a. auth_events cannot have duplicate keys since it's a BTree @@ -251,33 +250,11 @@ where let room_create_event = match room_create_event { | None => { - error!( - create_event = room_create_event.as_ref().map(Event::event_id).unwrap_or(<&EventId>::try_from("$unknown").unwrap()).as_str(), - power_levels = power_levels_event.as_ref().map(Event::event_id).unwrap_or(<&EventId>::try_from("$unknown").unwrap()).as_str(), - member_event = sender_member_event.as_ref().map(Event::event_id).unwrap_or(<&EventId>::try_from("$unknown").unwrap()).as_str(), - "no m.room.create event found for {} ({})!", - incoming_event.event_id().as_str(), - incoming_event.room_id().as_str() - ); + warn!("no m.room.create event in auth chain"); return Ok(false); }, | Some(e) => e, }; - // just re-check 1.2 to work around a bug - let Some(room_id_server_name) = incoming_event.room_id().server_name() else { - warn!("room ID has no servername"); - return Ok(false); - }; - - if room_id_server_name != room_create_event.sender().server_name() { - warn!( - "servername of room ID origin ({}) does not match servername of m.room.create \ - sender ({})", - room_id_server_name, - room_create_event.sender().server_name() - ); - return Ok(false); - } // 3. If event does not have m.room.create in auth_events reject if !incoming_event diff --git a/src/core/matrix/state_res/mod.rs b/src/core/matrix/state_res/mod.rs index a2052b92..651f6130 100644 --- a/src/core/matrix/state_res/mod.rs +++ b/src/core/matrix/state_res/mod.rs @@ -726,12 +726,8 @@ where Fut: Future> + Send, E: Event + Send + Sync, { - let mut room_id = None; while let Some(sort_ev) = event { debug!(event_id = sort_ev.event_id().as_str(), "mainline"); - if room_id.is_none() { - room_id = Some(sort_ev.room_id().to_owned()); - } let id = sort_ev.event_id(); if let Some(depth) = mainline_map.get(id) { @@ -750,7 +746,7 @@ where } } } - warn!("could not find a power event in the mainline map for {room_id:?}, defaulting to zero depth"); + // Did not find a power level event so we default to zero Ok(0) } diff --git a/src/service/rooms/event_handler/handle_outlier_pdu.rs b/src/service/rooms/event_handler/handle_outlier_pdu.rs index f9889d58..5339249d 100644 --- a/src/service/rooms/event_handler/handle_outlier_pdu.rs +++ b/src/service/rooms/event_handler/handle_outlier_pdu.rs @@ -119,7 +119,10 @@ pub(super) async fn handle_outlier_pdu<'a>( } // The original create event must be in the auth events - if !auth_events.contains_key(&(StateEventType::RoomCreate, String::new().into())) { + if !matches!( + auth_events.get(&(StateEventType::RoomCreate, String::new().into())), + Some(_) | None + ) { return Err!(Request(InvalidParam("Incoming event refers to wrong create event."))); } diff --git a/src/service/rooms/timeline/mod.rs b/src/service/rooms/timeline/mod.rs index 74c7348d..e65ae2c7 100644 --- a/src/service/rooms/timeline/mod.rs +++ b/src/service/rooms/timeline/mod.rs @@ -698,20 +698,6 @@ impl Service { .await .saturating_add(uint!(1)); - if state_key.is_none() { - if prev_events.is_empty() { - warn!("Timeline event had zero prev_events, something broke."); - return Err!(Request(Unknown("Timeline event had zero prev_events."))); - } - if depth.le(&uint!(2)) { - warn!( - "Had unsafe depth of {depth} in {room_id} when creating non-state event. \ - Bad!" - ); - return Err!(Request(Unknown("Unsafe depth for non-state event."))); - } - }; - let mut unsigned = unsigned.unwrap_or_default(); if let Some(state_key) = &state_key {