fix: Treat malformed policy config events as missing

This commit is contained in:
timedout
2026-05-25 18:17:12 +01:00
parent c8e0f7ebd3
commit 367c42ad28
@@ -90,28 +90,26 @@ pub async fn policy_server_allows_event(
room_version_rules: &RoomVersionRules, room_version_rules: &RoomVersionRules,
incoming: bool, incoming: bool,
) -> Result<()> { ) -> Result<()> {
let ps = match pdu.event_type().with_state_key("").0 { if pdu.event_type().with_state_key("") == (StateEventType::RoomPolicy, "".into()) {
| StateEventType::RoomPolicy => return Ok(()), return Ok(());
| _ => }
self.services let ps = match self
.services
.state_accessor .state_accessor
.room_state_get_content::<RoomPolicyEventContent>( .room_state_get_content::<RoomPolicyEventContent>(
room_id, room_id,
&StateEventType::RoomPolicy, &StateEventType::RoomPolicy,
"", "",
) )
.await, .await
}; {
let ps: RoomPolicyEventContent = match ps { | Ok(s) => s,
| Ok(ps) => ps, | Err(e) =>
| Err(e) => { return if e.is_not_found() || e.kind() == ErrorKind::BadJson {
if e.is_not_found() { debug!(%e, "no policy server configured");
trace!("no policy server configured"); Ok(())
} else { } else {
error!("failed to load policy server event: {e}"); Err!("failed to load m.room.policy state event: {e}")
// TODO: Should this fail closed?
}
return Ok(());
}, },
}; };