Merge branch 'erikj/perspective_limiter' into release-v0.11.1

This commit is contained in:
Erik Johnston 2015-11-20 17:24:23 +00:00
commit 1b64cb019e
2 changed files with 21 additions and 22 deletions

View File

@ -381,28 +381,24 @@ class Keyring(object):
def get_server_verify_key_v2_indirect(self, server_names_and_key_ids, def get_server_verify_key_v2_indirect(self, server_names_and_key_ids,
perspective_name, perspective_name,
perspective_keys): perspective_keys):
limiter = yield get_retry_limiter( # TODO(mark): Set the minimum_valid_until_ts to that needed by
perspective_name, self.clock, self.store # the events being validated or the current time if validating
) # an incoming request.
query_response = yield self.client.post_json(
with limiter: destination=perspective_name,
# TODO(mark): Set the minimum_valid_until_ts to that needed by path=b"/_matrix/key/v2/query",
# the events being validated or the current time if validating data={
# an incoming request. u"server_keys": {
query_response = yield self.client.post_json( server_name: {
destination=perspective_name, key_id: {
path=b"/_matrix/key/v2/query", u"minimum_valid_until_ts": 0
data={ } for key_id in key_ids
u"server_keys": {
server_name: {
key_id: {
u"minimum_valid_until_ts": 0
} for key_id in key_ids
}
for server_name, key_ids in server_names_and_key_ids
} }
}, for server_name, key_ids in server_names_and_key_ids
) }
},
long_retries=True,
)
keys = {} keys = {}

View File

@ -302,7 +302,7 @@ class MatrixFederationHttpClient(object):
defer.returnValue(json.loads(body)) defer.returnValue(json.loads(body))
@defer.inlineCallbacks @defer.inlineCallbacks
def post_json(self, destination, path, data={}): def post_json(self, destination, path, data={}, long_retries=True):
""" Sends the specifed json data using POST """ Sends the specifed json data using POST
Args: Args:
@ -311,6 +311,8 @@ class MatrixFederationHttpClient(object):
path (str): The HTTP path. path (str): The HTTP path.
data (dict): A dict containing the data that will be used as data (dict): A dict containing the data that will be used as
the request body. This will be encoded as JSON. the request body. This will be encoded as JSON.
long_retries (bool): A boolean that indicates whether we should
retry for a short or long time.
Returns: Returns:
Deferred: Succeeds when we get a 2xx HTTP response. The result Deferred: Succeeds when we get a 2xx HTTP response. The result
@ -330,6 +332,7 @@ class MatrixFederationHttpClient(object):
path.encode("ascii"), path.encode("ascii"),
body_callback=body_callback, body_callback=body_callback,
headers_dict={"Content-Type": ["application/json"]}, headers_dict={"Content-Type": ["application/json"]},
long_retries=True,
) )
if 200 <= response.code < 300: if 200 <= response.code < 300: