state-res: Raise an error (don't panic) on invalid power-levels event
This commit is contained in:
parent
40f99cb364
commit
6b1f027b88
@ -12,7 +12,7 @@ use ruma_events::{
|
|||||||
EventType,
|
EventType,
|
||||||
};
|
};
|
||||||
use ruma_identifiers::{RoomVersionId, UserId};
|
use ruma_identifiers::{RoomVersionId, UserId};
|
||||||
use tracing::{debug, info, warn};
|
use tracing::{debug, error, info, warn};
|
||||||
|
|
||||||
use crate::{room_version::RoomVersion, Error, Event, Result, StateMap};
|
use crate::{room_version::RoomVersion, Error, Event, Result, StateMap};
|
||||||
|
|
||||||
@ -561,10 +561,19 @@ where
|
|||||||
E: Event,
|
E: Event,
|
||||||
F: Fn(&EventType, &str) -> Option<Arc<E>>,
|
F: Fn(&EventType, &str) -> Option<Arc<E>>,
|
||||||
{
|
{
|
||||||
let power_event_state_key = power_event.state_key().expect("power events have state keys");
|
match power_event.state_key().as_deref() {
|
||||||
let current_state = if let Some(current_state) =
|
Some("") => {}
|
||||||
fetch_state(&power_event.event_type(), &power_event_state_key)
|
Some(key) => {
|
||||||
{
|
error!("m.room.power_levels event has non-empty state key: {}", key);
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
None => {
|
||||||
|
error!("check_power_levels requires an m.room.power_levels *state* event argument");
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let current_state = if let Some(current_state) = fetch_state(&power_event.event_type(), "") {
|
||||||
current_state
|
current_state
|
||||||
} else {
|
} else {
|
||||||
// If there is no previous m.room.power_levels event in the room, allow
|
// If there is no previous m.room.power_levels event in the room, allow
|
||||||
|
Loading…
x
Reference in New Issue
Block a user