Ensure room_id is absent for create event

This commit is contained in:
Erik Johnston
2026-05-27 15:54:19 +01:00
parent ee733ae2f6
commit a3082b76be
+10 -5
View File
@@ -106,11 +106,16 @@ pub fn validate_optional_room_id(
room_id: Option<&str>,
common_fields: &EventCommonFields,
) -> Result<(), Error> {
if room_id.is_none() {
// Only create events can have a missing room_id.
if common_fields.type_state_key_tuple() != Some((M_ROOM_CREATE, "")) {
bail!("room_id is required for non-create events");
}
let is_create_event = common_fields.type_state_key_tuple() == Some((M_ROOM_CREATE, ""));
match (is_create_event, room_id) {
// For non-create events, room_id must be present.
(false, None) => bail!("non-create event must have a room ID"),
(false, Some(_)) => {}
// For create events, room_id must be absent.
(true, Some(_)) => bail!("create event must not have a room ID"),
(true, None) => {}
}
Ok(())