Fix 500 on invalid utf-8 in request

If somebody sends us a request where the the body is invalid utf-8, we should
return a 400 rather than a 500. (json.loads throws a UnicodeError in this
situation)

We might as well catch all Exceptions here: it seems very unlikely that we
would get a request that *isn't caused by invalid json.
This commit is contained in:
Richard van der Hoff 2017-11-10 09:15:39 +00:00
parent 1282086f58
commit f90649eb2b

View File

@ -167,7 +167,8 @@ def parse_json_value_from_request(request):
try: try:
content = simplejson.loads(content_bytes) content = simplejson.loads(content_bytes)
except simplejson.JSONDecodeError: except Exception as e:
logger.warn("Unable to parse JSON: %s", e)
raise SynapseError(400, "Content not JSON.", errcode=Codes.NOT_JSON) raise SynapseError(400, "Content not JSON.", errcode=Codes.NOT_JSON)
return content return content