From c23786d37f207f45632d8288affbcd51bfb5e5c8 Mon Sep 17 00:00:00 2001 From: strawberry Date: Fri, 15 Nov 2024 12:59:05 -0500 Subject: [PATCH] dont try to backfill empty, private rooms Signed-off-by: strawberry --- src/api/client/membership.rs | 2 +- src/service/rooms/timeline/mod.rs | 28 ++++++++++++++++------------ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/api/client/membership.rs b/src/api/client/membership.rs index 10e69f58..c61185a7 100644 --- a/src/api/client/membership.rs +++ b/src/api/client/membership.rs @@ -1481,7 +1481,7 @@ pub async fn leave_room(services: &Services, user_id: &UserId, room_id: &RoomId, .await { if let Err(e) = remote_leave_room(services, user_id, room_id).await { - warn!("Failed to leave room {user_id} remotely: {e}"); + warn!(%user_id, "Failed to leave room {room_id} remotely: {e}"); // Don't tell the client about this error } diff --git a/src/service/rooms/timeline/mod.rs b/src/service/rooms/timeline/mod.rs index 281879d2..2faa1c40 100644 --- a/src/service/rooms/timeline/mod.rs +++ b/src/service/rooms/timeline/mod.rs @@ -1033,6 +1033,22 @@ impl Service { #[tracing::instrument(skip(self))] pub async fn backfill_if_required(&self, room_id: &RoomId, from: PduCount) -> Result<()> { + if self + .services + .state_cache + .room_joined_count(room_id) + .await + .is_ok_and(|count| count <= 1) + && !self + .services + .state_accessor + .is_world_readable(room_id) + .await + { + // Room is empty (1 user or none), there is no one that can backfill + return Ok(()); + } + let first_pdu = self .all_pdus(user_id!("@doesntmatter:conduit.rs"), room_id) .await? @@ -1060,20 +1076,8 @@ impl Service { } }); - let room_alias_servers = self - .services - .alias - .local_aliases_for_room(room_id) - .ready_filter_map(|alias| { - self.services - .globals - .server_is_ours(alias.server_name()) - .then_some(alias.server_name()) - }); - let mut servers = room_mods .stream() - .chain(room_alias_servers) .map(ToOwned::to_owned) .chain( self.services