diff options
author | Richard van der Hoff <richard@matrix.org> | 2018-08-01 13:47:07 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2018-08-01 16:02:38 +0100 |
commit | fa7dc889f19f581e81624245ce7820525066eff3 (patch) | |
tree | 9f09fae4e8f077542bfdccf806a12b45d09c6cd7 /synapse/http | |
parent | Factor out exception handling in federation_client (diff) | |
download | synapse-fa7dc889f19f581e81624245ce7820525066eff3.tar.xz |
Be more careful which errors we send back over the C-S API
We really shouldn't be sending all CodeMessageExceptions back over the C-S API; it will include things like 401s which we shouldn't proxy. That means that we need to explicitly turn a few HttpResponseExceptions into SynapseErrors in the federation layer. The effect of the latter is that the matrix errcode will get passed through correctly to calling clients, which might help with some of the random M_UNKNOWN errors when trying to join rooms.
Diffstat (limited to 'synapse/http')
-rw-r--r-- | synapse/http/server.py | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/synapse/http/server.py b/synapse/http/server.py index 1940c1c4f4..6dacb31037 100644 --- a/synapse/http/server.py +++ b/synapse/http/server.py @@ -36,7 +36,6 @@ from synapse.api.errors import ( Codes, SynapseError, UnrecognizedRequestError, - cs_exception, ) from synapse.http.request_metrics import requests_counter from synapse.util.caches import intern_dict @@ -77,16 +76,13 @@ def wrap_json_request_handler(h): def wrapped_request_handler(self, request): try: yield h(self, request) - except CodeMessageException as e: + except SynapseError as e: code = e.code - if isinstance(e, SynapseError): - logger.info( - "%s SynapseError: %s - %s", request, code, e.msg - ) - else: - logger.exception(e) + logger.info( + "%s SynapseError: %s - %s", request, code, e.msg + ) respond_with_json( - request, code, cs_exception(e), send_cors=True, + request, code, e.error_dict(), send_cors=True, pretty_print=_request_user_agent_is_curl(request), ) |