mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Notary server: make requests to origins in parallel
... else we're guaranteed to time out.
This commit is contained in:
parent
def5ea4062
commit
c5d60eadd5
@ -751,7 +751,15 @@ class ServerKeyFetcher(BaseV2KeyFetcher):
|
|||||||
self.client = hs.get_http_client()
|
self.client = hs.get_http_client()
|
||||||
|
|
||||||
def get_keys(self, keys_to_fetch):
|
def get_keys(self, keys_to_fetch):
|
||||||
"""see KeyFetcher.get_keys"""
|
"""
|
||||||
|
Args:
|
||||||
|
keys_to_fetch (dict[str, iterable[str]]):
|
||||||
|
the keys to be fetched. server_name -> key_ids
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Deferred[dict[str, dict[str, synapse.storage.keys.FetchKeyResult|None]]]:
|
||||||
|
map from server_name -> key_id -> FetchKeyResult
|
||||||
|
"""
|
||||||
|
|
||||||
results = {}
|
results = {}
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ from twisted.web.resource import Resource
|
|||||||
from twisted.web.server import NOT_DONE_YET
|
from twisted.web.server import NOT_DONE_YET
|
||||||
|
|
||||||
from synapse.api.errors import Codes, SynapseError
|
from synapse.api.errors import Codes, SynapseError
|
||||||
from synapse.crypto.keyring import KeyLookupError, ServerKeyFetcher
|
from synapse.crypto.keyring import ServerKeyFetcher
|
||||||
from synapse.http.server import respond_with_json_bytes, wrap_json_request_handler
|
from synapse.http.server import respond_with_json_bytes, wrap_json_request_handler
|
||||||
from synapse.http.servlet import parse_integer, parse_json_object_from_request
|
from synapse.http.servlet import parse_integer, parse_json_object_from_request
|
||||||
|
|
||||||
@ -215,15 +215,7 @@ class RemoteKey(Resource):
|
|||||||
json_results.add(bytes(result["key_json"]))
|
json_results.add(bytes(result["key_json"]))
|
||||||
|
|
||||||
if cache_misses and query_remote_on_cache_miss:
|
if cache_misses and query_remote_on_cache_miss:
|
||||||
for server_name, key_ids in cache_misses.items():
|
yield self.fetcher.get_keys(cache_misses)
|
||||||
try:
|
|
||||||
yield self.fetcher.get_server_verify_key_v2_direct(
|
|
||||||
server_name, key_ids
|
|
||||||
)
|
|
||||||
except KeyLookupError as e:
|
|
||||||
logger.info("Failed to fetch key: %s", e)
|
|
||||||
except Exception:
|
|
||||||
logger.exception("Failed to get key for %r", server_name)
|
|
||||||
yield self.query_keys(
|
yield self.query_keys(
|
||||||
request, query, query_remote_on_cache_miss=False
|
request, query, query_remote_on_cache_miss=False
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user