mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2025-09-10 00:23:03 +02:00
fix(PR977): Omitting redundant entries from the auth_chain caused problems
This commit is contained in:
parent
2cdccbf2fe
commit
53da294e53
1 changed files with 27 additions and 22 deletions
|
@ -1,6 +1,6 @@
|
||||||
#![allow(deprecated)]
|
#![allow(deprecated)]
|
||||||
|
|
||||||
use std::{borrow::Borrow, time::Instant};
|
use std::{borrow::Borrow, time::Instant, vec};
|
||||||
|
|
||||||
use axum::extract::State;
|
use axum::extract::State;
|
||||||
use conduwuit::{
|
use conduwuit::{
|
||||||
|
@ -258,17 +258,17 @@ async fn create_join_event(
|
||||||
.rooms
|
.rooms
|
||||||
.auth_chain
|
.auth_chain
|
||||||
.event_ids_iter(room_id, starting_events)
|
.event_ids_iter(room_id, starting_events)
|
||||||
.broad_filter_map(|event_id| async {
|
// .broad_filter_map(|event_id| async {
|
||||||
if omit_members && event_id.as_ref().is_ok_and(|e| state_ids.contains(e)) {
|
// if omit_members && event_id.as_ref().is_ok_and(|e| state_ids.contains(e)) {
|
||||||
// Don't include this event if it's already in the state
|
// // Don't include this event if it's already in the state
|
||||||
trace!(
|
// trace!(
|
||||||
"omitting member event {event_id:?} from returned auth chain as it is \
|
// "omitting member event {event_id:?} from returned auth chain as it is \
|
||||||
already in state"
|
// already in state"
|
||||||
);
|
// );
|
||||||
return None;
|
// return None;
|
||||||
}
|
// }
|
||||||
Some(event_id)
|
// Some(event_id)
|
||||||
})
|
// })
|
||||||
.broad_and_then(|event_id| async move {
|
.broad_and_then(|event_id| async move {
|
||||||
services.rooms.timeline.get_pdu_json(&event_id).await
|
services.rooms.timeline.get_pdu_json(&event_id).await
|
||||||
})
|
})
|
||||||
|
@ -283,19 +283,24 @@ async fn create_join_event(
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
services.sending.send_pdu_room(room_id, &pdu_id).await?;
|
services.sending.send_pdu_room(room_id, &pdu_id).await?;
|
||||||
let servers_in_room: Option<Vec<_>> = if omit_members {
|
let servers_in_room: Option<Vec<_>> = if !omit_members {
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
debug!("Fetching list of servers in room");
|
debug!("Fetching list of servers in room");
|
||||||
Some(
|
let servers: Vec<String> = services
|
||||||
services
|
|
||||||
.rooms
|
.rooms
|
||||||
.state_cache
|
.state_cache
|
||||||
.room_servers(room_id)
|
.room_servers(room_id)
|
||||||
.map(|sn| sn.as_str().to_owned())
|
.map(|sn| sn.as_str().to_owned())
|
||||||
.collect()
|
.collect()
|
||||||
.await,
|
.await;
|
||||||
)
|
// If there's no servers, just add us
|
||||||
|
let servers = if servers.is_empty() {
|
||||||
|
vec![services.globals.server_name().to_string()]
|
||||||
|
} else {
|
||||||
|
servers
|
||||||
|
};
|
||||||
|
Some(servers)
|
||||||
};
|
};
|
||||||
debug!("Returning send_join data");
|
debug!("Returning send_join data");
|
||||||
Ok(create_join_event::v2::RoomState {
|
Ok(create_join_event::v2::RoomState {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue