summary refs log tree commit diff
path: root/synapse/events/__init__.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-05-29 12:17:33 +0100
committerErik Johnston <erik@matrix.org>2015-05-29 12:17:33 +0100
commita7b65bdedf512f646a3ca2478fb96a914856de35 (patch)
tree8b0336ae751d081a21b32c16f1cdb5d93f43e2fb /synapse/events/__init__.py
parentSYN-395: Fix CAPTCHA, don't double decode json (diff)
downloadsynapse-a7b65bdedf512f646a3ca2478fb96a914856de35.tar.xz
Add config option to turn off freezing events. Use new encode_json api and ujson.loads
Diffstat (limited to 'synapse/events/__init__.py')
-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,