fix(membership): check if server is in room to decide whether to do remote leaves

This commit is contained in:
Matthias Ahouansou 2024-04-06 14:10:11 +01:00
parent 24e9c99d47
commit 9497713a79
No known key found for this signature in database

View file

@ -1398,8 +1398,10 @@ pub async fn leave_all_rooms(user_id: &UserId) -> Result<()> {
pub async fn leave_room(user_id: &UserId, room_id: &RoomId, reason: Option<String>) -> Result<()> { pub async fn leave_room(user_id: &UserId, room_id: &RoomId, reason: Option<String>) -> Result<()> {
// Ask a remote server if we don't have this room // Ask a remote server if we don't have this room
if !services().rooms.metadata.exists(room_id)? if !services()
&& room_id.server_name() != Some(services().globals.server_name()) .rooms
.state_cache
.server_in_room(services().globals.server_name(), room_id)?
{ {
if let Err(e) = remote_leave_room(user_id, room_id).await { if let Err(e) = remote_leave_room(user_id, room_id).await {
warn!("Failed to leave room {} remotely: {}", user_id, e); warn!("Failed to leave room {} remotely: {}", user_id, e);