diff --git a/src/pdu.rs b/src/pdu.rs index a593f0b5..84756bc2 100644 --- a/src/pdu.rs +++ b/src/pdu.rs @@ -213,7 +213,10 @@ impl PduEvent { pub fn convert_to_outgoing_federation_event( mut pdu_json: CanonicalJsonObject, ) -> Raw { - if let Some(CanonicalJsonValue::Object(unsigned)) = pdu_json.get_mut("unsigned") { + if let Some(unsigned) = pdu_json + .get_mut("unsigned") + .and_then(|val| val.as_object_mut()) + { unsigned.remove("transaction_id"); } diff --git a/src/ruma_wrapper.rs b/src/ruma_wrapper.rs index e4eda870..9143999f 100644 --- a/src/ruma_wrapper.rs +++ b/src/ruma_wrapper.rs @@ -271,41 +271,33 @@ where http_request = http_request.header(header.name.as_str(), &*header.value); } - match &mut json_body { - Some(CanonicalJsonValue::Object(json_body)) => { - let user_id = sender_user.clone().unwrap_or_else(|| { - UserId::parse_with_server_name("", db.globals.server_name()) - .expect("we know this is valid") - }); + if let Some(json_body) = json_body.as_mut().and_then(|val| val.as_object_mut()) { + let user_id = sender_user.clone().unwrap_or_else(|| { + UserId::parse_with_server_name("", db.globals.server_name()) + .expect("we know this is valid") + }); - if let Some(initial_request) = json_body - .get("auth") - .and_then(|auth| auth.as_object()) - .and_then(|auth| auth.get("session")) - .and_then(|session| session.as_str()) - .and_then(|session| { - db.uiaa - .get_uiaa_request( - &user_id, - &sender_device.clone().unwrap_or_else(|| "".into()), - session, - ) - .ok() - .flatten() - }) - { - match initial_request { - CanonicalJsonValue::Object(initial_request) => { - for (key, value) in initial_request.into_iter() { - json_body.entry(key).or_insert(value); - } - } - _ => {} - } + if let Some(CanonicalJsonValue::Object(initial_request)) = json_body + .get("auth") + .and_then(|auth| auth.as_object()) + .and_then(|auth| auth.get("session")) + .and_then(|session| session.as_str()) + .and_then(|session| { + db.uiaa + .get_uiaa_request( + &user_id, + &sender_device.clone().unwrap_or_else(|| "".into()), + session, + ) + .ok() + .flatten() + }) + { + for (key, value) in initial_request { + json_body.entry(key).or_insert(value); } - body = serde_json::to_vec(json_body).expect("value to bytes can't fail"); } - _ => {} + body = serde_json::to_vec(json_body).expect("value to bytes can't fail"); } let http_request = http_request.body(&*body).unwrap();