From 3b5794b5bda1c8457a3b87a65e5368635b242b5f Mon Sep 17 00:00:00 2001 From: Matthias Ahouansou Date: Sat, 6 Apr 2024 10:19:06 -0400 Subject: [PATCH] fix(membership): check if server is in room to decide whether to do remote leaves Signed-off-by: strawberry --- src/api/client_server/membership.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/api/client_server/membership.rs b/src/api/client_server/membership.rs index e140a48e..f5e7c893 100644 --- a/src/api/client_server/membership.rs +++ b/src/api/client_server/membership.rs @@ -1476,7 +1476,11 @@ pub async fn leave_all_rooms(user_id: &UserId) -> Result<()> { pub async fn leave_room(user_id: &UserId, room_id: &RoomId, reason: Option) -> Result<()> { // Ask a remote server if we don't have this room - if !services().rooms.metadata.exists(room_id)? && room_id.server_name() != Some(services().globals.server_name()) { + if !services() + .rooms + .state_cache + .server_in_room(services().globals.server_name(), room_id)? + { if let Err(e) = remote_leave_room(user_id, room_id).await { warn!("Failed to leave room {} remotely: {}", user_id, e); // Don't tell the client about this error