mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2025-07-04 20:16:03 +02:00
Compare commits
No commits in common. "2a66f8104066fa2f79bccd4734f86858666578a1" and "f7bdfdb5e5bf749691802e3a3b73dd36c9c4b83a" have entirely different histories.
2a66f81040
...
f7bdfdb5e5
5 changed files with 11 additions and 51 deletions
|
@ -2093,11 +2093,9 @@ fn default_servernameevent_data_cache_capacity() -> u32 {
|
||||||
parallelism_scaled_u32(200_000).saturating_add(500_000)
|
parallelism_scaled_u32(200_000).saturating_add(500_000)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn default_stateinfo_cache_capacity() -> u32 {
|
fn default_stateinfo_cache_capacity() -> u32 { parallelism_scaled_u32(5000) }
|
||||||
parallelism_scaled_u32(500).clamp(100, 12000) }
|
|
||||||
|
|
||||||
fn default_roomid_spacehierarchy_cache_capacity() -> u32 {
|
fn default_roomid_spacehierarchy_cache_capacity() -> u32 { parallelism_scaled_u32(1000) }
|
||||||
parallelism_scaled_u32(500).clamp(100, 12000) }
|
|
||||||
|
|
||||||
fn default_dns_cache_entries() -> u32 { 327680 }
|
fn default_dns_cache_entries() -> u32 { 327680 }
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,6 @@ use ruma::{
|
||||||
power_levels::RoomPowerLevelsEventContent,
|
power_levels::RoomPowerLevelsEventContent,
|
||||||
third_party_invite::RoomThirdPartyInviteEventContent,
|
third_party_invite::RoomThirdPartyInviteEventContent,
|
||||||
},
|
},
|
||||||
EventId,
|
|
||||||
int,
|
int,
|
||||||
serde::{Base64, Raw},
|
serde::{Base64, Raw},
|
||||||
};
|
};
|
||||||
|
@ -22,6 +21,7 @@ use serde::{
|
||||||
de::{Error as _, IgnoredAny},
|
de::{Error as _, IgnoredAny},
|
||||||
};
|
};
|
||||||
use serde_json::{from_str as from_json_str, value::RawValue as RawJsonValue};
|
use serde_json::{from_str as from_json_str, value::RawValue as RawJsonValue};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
Error, Event, Result, StateEventType, StateKey, TimelineEventType,
|
Error, Event, Result, StateEventType, StateKey, TimelineEventType,
|
||||||
power_levels::{
|
power_levels::{
|
||||||
|
@ -217,9 +217,8 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// TODO: In the past this code was commented as it caused problems with Synapse. This is no
|
// TODO: In the past this code caused problems federating with synapse, maybe this has been
|
||||||
// longer the case. This needs to be implemented.
|
// resolved already. Needs testing.
|
||||||
// See also: https://github.com/ruma/ruma/pull/2064
|
|
||||||
//
|
//
|
||||||
// 2. Reject if auth_events
|
// 2. Reject if auth_events
|
||||||
// a. auth_events cannot have duplicate keys since it's a BTree
|
// 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 {
|
let room_create_event = match room_create_event {
|
||||||
| None => {
|
| None => {
|
||||||
error!(
|
warn!("no m.room.create event in auth chain");
|
||||||
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()
|
|
||||||
);
|
|
||||||
return Ok(false);
|
return Ok(false);
|
||||||
},
|
},
|
||||||
| Some(e) => e,
|
| 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
|
// 3. If event does not have m.room.create in auth_events reject
|
||||||
if !incoming_event
|
if !incoming_event
|
||||||
|
|
|
@ -726,12 +726,8 @@ where
|
||||||
Fut: Future<Output = Option<E>> + Send,
|
Fut: Future<Output = Option<E>> + Send,
|
||||||
E: Event + Send + Sync,
|
E: Event + Send + Sync,
|
||||||
{
|
{
|
||||||
let mut room_id = None;
|
|
||||||
while let Some(sort_ev) = event {
|
while let Some(sort_ev) = event {
|
||||||
debug!(event_id = sort_ev.event_id().as_str(), "mainline");
|
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();
|
let id = sort_ev.event_id();
|
||||||
if let Some(depth) = mainline_map.get(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)
|
Ok(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,10 @@ pub(super) async fn handle_outlier_pdu<'a>(
|
||||||
}
|
}
|
||||||
|
|
||||||
// The original create event must be in the auth events
|
// 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.")));
|
return Err!(Request(InvalidParam("Incoming event refers to wrong create event.")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -698,20 +698,6 @@ impl Service {
|
||||||
.await
|
.await
|
||||||
.saturating_add(uint!(1));
|
.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();
|
let mut unsigned = unsigned.unwrap_or_default();
|
||||||
|
|
||||||
if let Some(state_key) = &state_key {
|
if let Some(state_key) = &state_key {
|
||||||
|
|
Loading…
Add table
Reference in a new issue