summary refs log tree commit diff
path: root/synapse/crypto/keyring.py
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/crypto/keyring.py')
-rw-r--r--synapse/crypto/keyring.py39
1 files changed, 21 insertions, 18 deletions
diff --git a/synapse/crypto/keyring.py b/synapse/crypto/keyring.py

index 9e9b1c1c86..0860411218 100644 --- a/synapse/crypto/keyring.py +++ b/synapse/crypto/keyring.py
@@ -43,7 +43,11 @@ from synapse.api.errors import ( from synapse.config.key import TrustedKeyServer from synapse.events import EventBase from synapse.events.utils import prune_event_dict -from synapse.logging.context import make_deferred_yieldable, run_in_background +from synapse.logging.context import ( + defer_to_thread, + make_deferred_yieldable, + run_in_background, +) from synapse.storage.keys import FetchKeyResult from synapse.types import JsonDict from synapse.util import unwrapFirstError @@ -161,6 +165,7 @@ class Keyring: self, hs: "HomeServer", key_fetchers: "Optional[Iterable[KeyFetcher]]" = None ): self.clock = hs.get_clock() + self.reactor = hs.get_reactor() if key_fetchers is None: key_fetchers = ( @@ -288,7 +293,9 @@ class Keyring: verify_key = key_result.verify_key json_object = verify_request.get_json_object() try: - verify_signed_json( + await defer_to_thread( + self.reactor, + verify_signed_json, json_object, verify_request.server_name, verify_key, @@ -544,22 +551,18 @@ class BaseV2KeyFetcher(KeyFetcher): key_json_bytes = encode_canonical_json(response_json) - await make_deferred_yieldable( - defer.gatherResults( - [ - run_in_background( - self.store.store_server_keys_json, - server_name=server_name, - key_id=key_id, - from_server=from_server, - ts_now_ms=time_added_ms, - ts_expires_ms=ts_valid_until_ms, - key_json_bytes=key_json_bytes, - ) - for key_id in verify_keys - ], - consumeErrors=True, - ).addErrback(unwrapFirstError) + await self.store.store_server_keys_json_multi( + [ + ( + server_name, + key_id, + from_server, + time_added_ms, + ts_valid_until_ms, + key_json_bytes, + ) + for key_id in verify_keys + ], ) return verify_keys