diff options
author | Jeremy Cline <jeremy@jcline.org> | 2017-09-30 11:22:37 -0400 |
---|---|---|
committer | Jeremy Cline <jeremy@jcline.org> | 2017-09-30 11:22:37 -0400 |
commit | cafb8de132999507e9b05c751fbb32d199e7de50 (patch) | |
tree | a08c6b98cb6c1a18f7e168bb84a60c53c19a6b1c /synapse/handlers/message.py | |
parent | Merge pull request #2464 from rnbdsh/patch-4 (diff) | |
download | synapse-cafb8de132999507e9b05c751fbb32d199e7de50.tar.xz |
Unfreeze event before serializing with ujson
In newer versions of https://github.com/esnme/ultrajson, ujson does not serialize frozendicts (introduced in esnme/ultrajson@53f85b1). Although the PyPI version is still 1.35, Fedora ships with a build from commit esnme/ultrajson@2f1d487. This causes the serialization to fail if the distribution-provided package is used. This runs the event through the unfreeze utility before serializing it. Thanks to @ignatenkobrain for tracking down the root cause. fixes #2351 Signed-off-by: Jeremy Cline <jeremy@jcline.org>
Diffstat (limited to 'synapse/handlers/message.py')
-rw-r--r-- | synapse/handlers/message.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py index be4f123c54..fe9d8848bc 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py @@ -26,6 +26,7 @@ from synapse.types import ( from synapse.util.async import run_on_reactor, ReadWriteLock, Limiter from synapse.util.logcontext import preserve_fn from synapse.util.metrics import measure_func +from synapse.util.frozenutils import unfreeze from synapse.visibility import filter_events_for_client from ._base import BaseHandler @@ -503,7 +504,7 @@ class MessageHandler(BaseHandler): # Ensure that we can round trip before trying to persist in db try: - dump = ujson.dumps(event.content) + dump = ujson.dumps(unfreeze(event.content)) ujson.loads(dump) except: logger.exception("Failed to encode content: %r", event.content) |