2 files changed, 6 insertions, 1 deletions
diff --git a/synapse/events/__init__.py b/synapse/events/__init__.py
index 39ce4f7c42..3fb4b5e791 100644
--- a/synapse/events/__init__.py
+++ b/synapse/events/__init__.py
@@ -90,7 +90,7 @@ class EventBase(object):
d = dict(self._event_dict)
d.update({
"signatures": self.signatures,
- "unsigned": self.unsigned,
+ "unsigned": dict(self.unsigned),
})
return d
@@ -109,6 +109,9 @@ class EventBase(object):
pdu_json.setdefault("unsigned", {})["age"] = int(age)
del pdu_json["unsigned"]["age_ts"]
+ # This may be a frozen event
+ pdu_json["unsigned"].pop("redacted_because", None)
+
return pdu_json
def __set__(self, instance, value):
diff --git a/synapse/storage/events.py b/synapse/storage/events.py
index 5b64918024..e3eabab13d 100644
--- a/synapse/storage/events.py
+++ b/synapse/storage/events.py
@@ -811,6 +811,8 @@ class EventsStore(SQLBaseStore):
)
if because:
+ # It's fine to do add the event directly, since get_pdu_json
+ # will serialise this field correctly
ev.unsigned["redacted_because"] = because
if get_prev_content and "replaces_state" in ev.unsigned:
|