summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2021-08-24 10:44:54 +0100
committerErik Johnston <erik@matrix.org>2021-08-24 10:44:54 +0100
commit96a1eb77f85f08defb5edeb4f023d6f37f36c260 (patch)
treede2c7d6d1cc3b3111dce7260a7a4943100ac6f43
parentAdd store_server_keys_json_multi (diff)
downloadsynapse-96a1eb77f85f08defb5edeb4f023d6f37f36c260.tar.xz
Defer verification to thread pool
-rw-r--r--synapse/crypto/keyring.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/synapse/crypto/keyring.py b/synapse/crypto/keyring.py

index 4a34b798a5..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,