diff --git a/src/service/rooms/event_handler/mod.rs b/src/service/rooms/event_handler/mod.rs
index 63301b81d46146df5dfc7a6dfbc77f1da8a85cc2..e3502e654d102e2ff71b42f6d36f6b8851e3721b 100644
--- a/src/service/rooms/event_handler/mod.rs
+++ b/src/service/rooms/event_handler/mod.rs
@@ -1529,17 +1529,18 @@ pub(crate) async fn fetch_join_signing_keys(
 
         while let Some(result) = futures.next().await {
             if let (Ok(get_keys_response), origin) = result {
-                let result: BTreeMap<_, _> = services()
-                    .globals
-                    .add_signing_key(&origin, get_keys_response.server_key.deserialize().unwrap())?
-                    .into_iter()
-                    .map(|(k, v)| (k.to_string(), v.key))
-                    .collect();
-
-                pub_key_map
-                    .write()
-                    .map_err(|_| Error::bad_database("RwLock is poisoned."))?
-                    .insert(origin.to_string(), result);
+                if let Ok(key) = get_keys_response.server_key.deserialize() {
+                    let result: BTreeMap<_, _> = services()
+                        .globals
+                        .add_signing_key(&origin, key)?
+                        .into_iter()
+                        .map(|(k, v)| (k.to_string(), v.key))
+                        .collect();
+                    pub_key_map
+                        .write()
+                        .map_err(|_| Error::bad_database("RwLock is poisoned."))?
+                        .insert(origin.to_string(), result);
+                }
             }
         }