summary refs log tree commit diff
path: root/synapse/events
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-05-29 14:58:56 +0100
committerErik Johnston <erik@matrix.org>2015-05-29 14:58:56 +0100
commit45bac68064754117f371e93169e332115201aee7 (patch)
tree3af9696ad2f57e13f2c876e9a41b7c18f75437f1 /synapse/events
parentSYN-395: Fix CAPTCHA, don't double decode json (diff)
parentBump syutil version (diff)
downloadsynapse-45bac68064754117f371e93169e332115201aee7.tar.xz
Merge pull request #169 from matrix-org/erikj/ultrajson
Use ultrajson when possible. Add option to turn off freezing of events.
Diffstat (limited to 'synapse/events')
-rw-r--r--synapse/events/__init__.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/synapse/events/__init__.py b/synapse/events/__init__.py
index e4495ccf12..b2a904b408 100644
--- a/synapse/events/__init__.py
+++ b/synapse/events/__init__.py
@@ -16,6 +16,12 @@
 from synapse.util.frozenutils import freeze
 
 
+# Whether we should use frozen_dict in FrozenEvent. Using frozen_dicts prevents
+# bugs where we accidentally share e.g. signature dicts. However, converting
+# a dict to frozen_dicts is expensive.
+USE_FROZEN_DICTS = True
+
+
 class _EventInternalMetadata(object):
     def __init__(self, internal_metadata_dict):
         self.__dict__ = dict(internal_metadata_dict)
@@ -122,7 +128,10 @@ class FrozenEvent(EventBase):
 
         unsigned = dict(event_dict.pop("unsigned", {}))
 
-        frozen_dict = freeze(event_dict)
+        if USE_FROZEN_DICTS:
+            frozen_dict = freeze(event_dict)
+        else:
+            frozen_dict = dict(event_dict)
 
         super(FrozenEvent, self).__init__(
             frozen_dict,