summary refs log tree commit diff
path: root/synapse/http/servlet.py
diff options
context:
space:
mode:
authorAmber Brown <hawkowl@atleastfornow.net>2018-08-02 00:54:06 +1000
committerGitHub <noreply@github.com>2018-08-02 00:54:06 +1000
commitda7785147df442eb9cdc1031fa5fea12b7b25334 (patch)
tree4a10c31ba0cda805cd31047cdbb4aa9ccb32a8ce /synapse/http/servlet.py
parentMerge pull request #3543 from bebehei/docker (diff)
downloadsynapse-da7785147df442eb9cdc1031fa5fea12b7b25334.tar.xz
Python 3: Convert some unicode/bytes uses (#3569)
Diffstat (limited to 'synapse/http/servlet.py')
-rw-r--r--synapse/http/servlet.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/synapse/http/servlet.py b/synapse/http/servlet.py
index 882816dc8f..69f7085291 100644
--- a/synapse/http/servlet.py
+++ b/synapse/http/servlet.py
@@ -171,8 +171,16 @@ def parse_json_value_from_request(request, allow_empty_body=False):
     if not content_bytes and allow_empty_body:
         return None
 
+    # Decode to Unicode so that simplejson will return Unicode strings on
+    # Python 2
     try:
-        content = json.loads(content_bytes)
+        content_unicode = content_bytes.decode('utf8')
+    except UnicodeDecodeError:
+        logger.warn("Unable to decode UTF-8")
+        raise SynapseError(400, "Content not JSON.", errcode=Codes.NOT_JSON)
+
+    try:
+        content = json.loads(content_unicode)
     except Exception as e:
         logger.warn("Unable to parse JSON: %s", e)
         raise SynapseError(400, "Content not JSON.", errcode=Codes.NOT_JSON)