mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-16 17:43:50 +01:00
receiving a 400 caused an exception. handle it
This commit is contained in:
parent
9a2e22fd41
commit
b2df0e8e2c
1 changed files with 12 additions and 5 deletions
|
@ -212,27 +212,34 @@ class MatrixFederationHttpClient(object):
|
||||||
send_request_args (Dict): A dictionary of arguments to pass to
|
send_request_args (Dict): A dictionary of arguments to pass to
|
||||||
`_send_request()`.
|
`_send_request()`.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
HttpResponseException: If we get an HTTP response code >= 300
|
||||||
|
(except 429).
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Deferred[Dict]: Parsed JSON response body.
|
Deferred[Dict]: Parsed JSON response body.
|
||||||
"""
|
"""
|
||||||
response = yield self._send_request(**send_request_args)
|
try:
|
||||||
|
response = yield self._send_request(**send_request_args)
|
||||||
|
except HttpResponseException as e:
|
||||||
|
# Received a 400. Raise unless we're retrying
|
||||||
|
if not try_trailing_slash_on_400:
|
||||||
|
raise e
|
||||||
|
|
||||||
# Check if it's necessary to retry with a trailing slash
|
# Check if it's necessary to retry with a trailing slash
|
||||||
body = yield _handle_json_response(
|
body = yield _handle_json_response(
|
||||||
self.hs.get_reactor(), self.default_timeout, request, response,
|
self.hs.get_reactor(), self.default_timeout, request, response,
|
||||||
)
|
)
|
||||||
|
|
||||||
if not try_trailing_slash_on_400:
|
|
||||||
defer.returnValue(body)
|
|
||||||
|
|
||||||
# Retry with a trailing slash if we received a 400 with
|
# Retry with a trailing slash if we received a 400 with
|
||||||
# 'M_UNRECOGNIZED' which some endpoints can return when omitting a
|
# 'M_UNRECOGNIZED' which some endpoints can return when omitting a
|
||||||
# trailing slash on Synapse <=v0.99.2.
|
# trailing slash on Synapse <=v0.99.2.
|
||||||
if (response.code == 400 and body.get("errcode") == "M_UNRECOGNIZED"):
|
if not (response.code == 400 and body.get("errcode") == "M_UNRECOGNIZED"):
|
||||||
# Enable backoff if initially disabled
|
# Enable backoff if initially disabled
|
||||||
send_request_args["backoff_on_404"] = backoff_on_404
|
send_request_args["backoff_on_404"] = backoff_on_404
|
||||||
|
|
||||||
send_request_args["path"] += "/"
|
send_request_args["path"] += "/"
|
||||||
|
|
||||||
response = yield self._send_request(**send_request_args)
|
response = yield self._send_request(**send_request_args)
|
||||||
|
|
||||||
body = yield _handle_json_response(
|
body = yield _handle_json_response(
|
||||||
|
|
Loading…
Reference in a new issue