fix(stateres): Don't panic when the create event goes missing

I have no idea how this can even happen and frankly I'm scared to look
however that's a problem for another time.
Panicking causes entire transactions to explode, this just makes one
event explode.
This commit is contained in:
timedout committed 2026-09-14 18:14:22 +01:00
1 parent 5e7cb169ae
commit 77d47f268e
1 file changed
+13
+13
View File
@@ -809,6 +809,19 @@ where
.await;
trace!(map = ?auth_state.keys().collect::<Vec<_>>(), event_id = event.event_id().as_str(), "auth state for event");
// If this is not a create event, we must have the room create event in
// the auth state by now.
if *event.event_type() != StateEventType::RoomCreate.into()
|| event.state_key().is_none_or(|k| !k.is_empty())
{
if !auth_state.contains_key(&StateEventType::RoomCreate.with_state_key("")) {
return Err(Error::NotFound(format!(
"m.room.create did not appear in the auth state for {}",
event.event_id()
)));
}
}
debug!(event_id = event.event_id().as_str(), "Running auth checks");
// The key for this is (eventType + a state_key of the signed token not