From 1bf6e69d96adc0a62c2ff3230c775ce47ccb47f8 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Wed, 4 Nov 2020 18:30:05 +0000 Subject: [PATCH] Return 502, not 500 when a remote resource uses invalid Content-Type --- synapse/http/matrixfederationclient.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/synapse/http/matrixfederationclient.py b/synapse/http/matrixfederationclient.py index 04766ca965..ddfa9ce20a 100644 --- a/synapse/http/matrixfederationclient.py +++ b/synapse/http/matrixfederationclient.py @@ -1063,13 +1063,20 @@ def check_content_type_is_json(headers): """ c_type = headers.getRawHeaders(b"Content-Type") if c_type is None: - raise RequestSendFailed(RuntimeError("No Content-Type header"), can_retry=False) + raise RequestSendFailed( + SynapseError(502, "No Content-Type header received from remote server"), + can_retry=False, + ) c_type = c_type[0].decode("ascii") # only the first header val, options = cgi.parse_header(c_type) if val != "application/json": raise RequestSendFailed( - RuntimeError("Content-Type not application/json: was '%s'" % c_type), + SynapseError( + 502, + "Remote server sent Content-Type header of '%s', not 'application/json'" + % c_type, + ), can_retry=False, )