diff --git a/book/changelog.md b/book/changelog.md index 4416731a..1e3d3ff2 100644 --- a/book/changelog.md +++ b/book/changelog.md @@ -168,6 +168,9 @@ This will be the first release of Grapevine since it was forked from Conduit ([!78](https://gitlab.computer.surgery/matrix/grapevine-fork/-/merge_requests/78)) 15. Fix bug where expired keys may not be re-fetched in some scenarios. ([!78](https://gitlab.computer.surgery/matrix/grapevine-fork/-/merge_requests/78)) +16. Fix bug where signing keys would not be fetched when joining a room if we + hadn't previously seen any signing keys from that server. + ([!87](https://gitlab.computer.surgery/matrix/grapevine-fork/-/merge_requests/87)) ### Added diff --git a/src/service/rooms/event_handler.rs b/src/service/rooms/event_handler.rs index 0f1ac9b7..00b11b26 100644 --- a/src/service/rooms/event_handler.rs +++ b/src/service/rooms/event_handler.rs @@ -1714,15 +1714,15 @@ impl Service { trace!(server = %origin, "Loading signing keys for other server"); - if let Some(result) = services().globals.signing_keys_for(origin)? { - if !contains_all_ids(&result) { - trace!( - server = %origin, - "Signing key not loaded for server", - ); - servers.insert(origin.to_owned(), BTreeMap::new()); - } - + let result = services().globals.signing_keys_for(origin)?; + if !result.as_ref().is_some_and(contains_all_ids) { + trace!( + server = %origin, + "Signing key not loaded for server", + ); + servers.insert(origin.to_owned(), BTreeMap::new()); + } + if let Some(result) = result { pub_key_map.insert(origin.to_string(), result); } }