diff --git a/src/service/rooms/roles/mod.rs b/src/service/rooms/roles/mod.rs index 41437fc4..bb973ba8 100644 --- a/src/service/rooms/roles/mod.rs +++ b/src/service/rooms/roles/mod.rs @@ -719,7 +719,9 @@ impl Service { pending.insert(space_id.clone()) }; - let _permit = this.enforcement_semaphore.acquire().await; + let Ok(_permit) = this.enforcement_semaphore.acquire().await else { + return; + }; // Always repopulate cache first this.populate_space(&space_id).await; @@ -829,7 +831,9 @@ impl Service { let this = Arc::clone(self); self.server.runtime().spawn(async move { - let _permit = this.enforcement_semaphore.acquire().await; + let Ok(_permit) = this.enforcement_semaphore.acquire().await else { + return; + }; // Read the actual m.space.child state event to check via let child_event_type = StateEventType::SpaceChild; @@ -984,7 +988,9 @@ impl Service { let this = Arc::clone(self); self.server.runtime().spawn(async move { - let _permit = this.enforcement_semaphore.acquire().await; + let Ok(_permit) = this.enforcement_semaphore.acquire().await else { + return; + }; if let Err(e) = this.auto_join_qualifying_rooms(&space_id, &user_id).await { debug_warn!(user_id = %user_id, error = ?e, "Auto-join on Space join failed"); diff --git a/src/service/rooms/timeline/build.rs b/src/service/rooms/timeline/build.rs index c9133032..95781371 100644 --- a/src/service/rooms/timeline/build.rs +++ b/src/service/rooms/timeline/build.rs @@ -166,7 +166,7 @@ pub async fn build_and_append_pdu( .max(); if let Some(space_pl) = space_pl { match proposed.users.get(user_id) { - | None => { + | None if i64::from(proposed.users_default) != space_pl => { debug_warn!( user_id = %user_id, room_id = %room_id,