summary refs log tree commit diff
path: root/synapse/crypto/keyring.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-02-18 10:34:40 +0000
committerErik Johnston <erik@matrix.org>2015-02-18 10:34:40 +0000
commit1be67eca8a1b9ccf86b58c1b8a9a6c5c5998956a (patch)
treef1e77a10168902b5a50e65bba6dd2fea8ce19469 /synapse/crypto/keyring.py
parentMerge branch 'develop' of github.com:matrix-org/synapse into develop (diff)
parentMore docs (diff)
downloadsynapse-1be67eca8a1b9ccf86b58c1b8a9a6c5c5998956a.tar.xz
Merge branch 'keyclient_retry_scheme' of github.com:matrix-org/synapse into develop
Diffstat (limited to 'synapse/crypto/keyring.py')
-rw-r--r--synapse/crypto/keyring.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/synapse/crypto/keyring.py b/synapse/crypto/keyring.py

index 3fb99f7125..828aced44a 100644 --- a/synapse/crypto/keyring.py +++ b/synapse/crypto/keyring.py
@@ -22,6 +22,8 @@ from syutil.crypto.signing_key import ( from syutil.base64util import decode_base64, encode_base64 from synapse.api.errors import SynapseError, Codes +from synapse.util.retryutils import get_retry_limiter + from OpenSSL import crypto import logging @@ -87,12 +89,18 @@ class Keyring(object): return # Try to fetch the key from the remote server. - # TODO(markjh): Ratelimit requests to a given server. - (response, tls_certificate) = yield fetch_server_key( - server_name, self.hs.tls_context_factory + limiter = yield get_retry_limiter( + server_name, + self.clock, + self.store, ) + with limiter: + (response, tls_certificate) = yield fetch_server_key( + server_name, self.hs.tls_context_factory + ) + # Check the response. x509_certificate_bytes = crypto.dump_certificate(