mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-06-17 19:39:34 -04:00
Better exception handling
This commit is contained in:
parent
ecea5af491
commit
621e7f37f1
2 changed files with 22 additions and 24 deletions
|
@ -221,30 +221,31 @@ class MatrixFederationHttpClient(object):
|
|||
"""
|
||||
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
|
||||
body = yield _handle_json_response(
|
||||
self.hs.get_reactor(), self.default_timeout, request, response,
|
||||
)
|
||||
|
||||
# Retry with a trailing slash if we received a 400 with
|
||||
# 'M_UNRECOGNIZED' which some endpoints can return when omitting a
|
||||
# trailing slash on Synapse <=v0.99.2.
|
||||
if not (response.code == 400 and body.get("errcode") == "M_UNRECOGNIZED"):
|
||||
# Enable backoff if initially disabled
|
||||
send_request_args["backoff_on_404"] = backoff_on_404
|
||||
|
||||
# Add trailing slash
|
||||
send_request_args["request"].path += "/"
|
||||
|
||||
response = yield self._send_request(**send_request_args)
|
||||
# Check if it's necessary to retry with a trailing slash
|
||||
body = yield _handle_json_response(
|
||||
self.hs.get_reactor(), self.default_timeout, request, response,
|
||||
)
|
||||
except HttpResponseException as e:
|
||||
if not try_trailing_slash_on_400:
|
||||
# Received an error >= 300. Raise unless we're retrying
|
||||
raise e
|
||||
except:
|
||||
raise e
|
||||
|
||||
# Retry with a trailing slash if we received a 400 with
|
||||
# 'M_UNRECOGNIZED' which some endpoints can return when omitting a
|
||||
# trailing slash on Synapse <= v0.99.2.
|
||||
# Enable backoff if initially disabled
|
||||
send_request_args["backoff_on_404"] = backoff_on_404
|
||||
|
||||
# Add trailing slash
|
||||
send_request_args["request"].path += "/"
|
||||
|
||||
response = yield self._send_request(**send_request_args)
|
||||
body = yield _handle_json_response(
|
||||
self.hs.get_reactor(), self.default_timeout, request, response,
|
||||
)
|
||||
|
||||
defer.returnValue(body)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue