summaryrefslogtreecommitdiff
path: root/src/api/server_server.rs
diff options
context:
space:
mode:
authorTimo Kösters <timo@koesters.xyz>2022-10-11 17:59:49 +0200
committerTimo Kösters <timo@koesters.xyz>2022-10-11 17:59:49 +0200
commitd1e5acd7b3270fd08601dc9ec2eaad2455a53b9f (patch)
treec771013b691103b16b33b6032143456596238c45 /src/api/server_server.rs
parent68227c06c398ece491cd7f3b7bebe254dcdb43f6 (diff)
downloadconduit-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.rs18
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,
})