diff options
author | Timo Kösters <timo@koesters.xyz> | 2022-10-11 17:59:49 +0200 |
---|---|---|
committer | Timo Kösters <timo@koesters.xyz> | 2022-10-11 17:59:49 +0200 |
commit | d1e5acd7b3270fd08601dc9ec2eaad2455a53b9f (patch) | |
tree | c771013b691103b16b33b6032143456596238c45 /src/api/server_server.rs | |
parent | 68227c06c398ece491cd7f3b7bebe254dcdb43f6 (diff) | |
download | conduit-d1e5acd7b3270fd08601dc9ec2eaad2455a53b9f.zip |
fix: don't panic on missing events in state
Diffstat (limited to 'src/api/server_server.rs')
-rw-r--r-- | src/api/server_server.rs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/api/server_server.rs b/src/api/server_server.rs index eabe8c8..35c01f9 100644 --- a/src/api/server_server.rs +++ b/src/api/server_server.rs @@ -55,7 +55,7 @@ use std::{ time::{Duration, Instant, SystemTime}, }; -use tracing::{info, warn}; +use tracing::{error, info, warn}; /// Wraps either an literal IP address plus port, or a hostname plus complement /// (colon-plus-port if it was specified). @@ -1149,16 +1149,18 @@ pub async fn get_room_state_route( Ok(get_room_state::v1::Response { auth_chain: auth_chain_ids - .map(|id| { - services() + .filter_map(|id| { + match services() .rooms .timeline - .get_pdu_json(&id) - .map(|maybe_json| { - PduEvent::convert_to_outgoing_federation_event(maybe_json.unwrap()) - }) + .get_pdu_json(&id).ok()? { + Some(json) => Some(PduEvent::convert_to_outgoing_federation_event(json)), + None => { + error!("Could not find event json for {id} in db."); + None + } + } }) - .filter_map(|r| r.ok()) .collect(), pdus, }) |