style: Check power levels before attempting to send extremity squashes

Solves a problem where the console screams in agony when local users can't send dummy events
This commit is contained in:
timedout committed 2026-06-20 17:08:00 +01:00
1 parent 968328d788
commit 115a2e802e
1 file changed
+11
@@ -271,8 +271,19 @@ pub async fn handle_incoming_pdu<'a>(
"Attempting to squash extremities after upgrading pdu"
);
// Try to send a dummy event to squash extremities. See issue #1844
let power_levels = self
.services
.state_accessor
.get_room_power_levels(room_id)
.await;
let mut local_users = self.services.state_cache.local_users_in_room(room_id);
while let Some(user_id) = local_users.next().await {
if power_levels.for_user(&user_id)
< power_levels.for_message("org.matrix.dummy_event".into())
{
trace!(%user_id, "user does not have power level to send dummy event, skipping");
continue;
}
let state_lock = self.services.state.mutex.lock(room_id).await;
if self
.services