fix: do not panic on a JSON not containing the PDU
Do not panic on a JSON not containing the PDU when executing the parse-pdu admin command.
@@ -354,13 +354,9 @@ fn process_admin_command(
let string = body[1..body.len() - 1].join("\n");
match serde_json::from_str(&string) {
Ok(value) => {
- let event_id = EventId::parse(format!(
- "${}",
- // Anything higher than version3 behaves the same
- ruma::signatures::reference_hash(&value, &RoomVersionId::V6)
- .expect("ruma can calculate reference hashes")
- ))
- .expect("ruma's reference hashes are valid event ids");
+ match ruma::signatures::reference_hash(&value, &RoomVersionId::V6) {
+ Ok(hash) => {
+ let event_id = EventId::parse(format!("${}", hash));
match serde_json::from_value::<PduEvent>(
serde_json::to_value(value).expect("value is json"),
@@ -375,6 +371,12 @@ fn process_admin_command(
)),
}
}
+ Err(e) => RoomMessageEventContent::text_plain(format!(
+ "Could not parse PDU JSON: {:?}",
+ e
+ )),
+ }
+ }
Err(e) => RoomMessageEventContent::text_plain(format!(
"Invalid json in command body: {}",
e
