Fix the exception that is raised when invalid JSON is encountered. (#8291)

This commit is contained in:
Patrick Cloke 2020-09-10 14:55:25 -04:00 committed by GitHub
parent 192e98111d
commit b86764662b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 167 additions and 2 deletions

View file

@ -54,6 +54,7 @@ from synapse.logging.opentracing import (
start_active_span,
tags,
)
from synapse.util import json_decoder
from synapse.util.async_helpers import timeout_deferred
from synapse.util.metrics import Measure
@ -164,7 +165,9 @@ async def _handle_json_response(
try:
check_content_type_is_json(response.headers)
d = treq.json_content(response)
# Use the custom JSON decoder (partially re-implements treq.json_content).
d = treq.text_content(response, encoding="utf-8")
d.addCallback(json_decoder.decode)
d = timeout_deferred(d, timeout=timeout_sec, reactor=reactor)
body = await make_deferred_yieldable(d)

View file

@ -28,7 +28,7 @@ logger = logging.getLogger(__name__)
def _reject_invalid_json(val):
"""Do not allow Infinity, -Infinity, or NaN values in JSON."""
raise json.JSONDecodeError("Invalid JSON value: '%s'" % val)
raise ValueError("Invalid JSON value: '%s'" % val)
# Create a custom encoder to reduce the whitespace produced by JSON encoding and