summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
Diffstat (limited to 'synapse')
-rw-r--r--synapse/events/__init__.py5
-rw-r--r--synapse/handlers/federation.py2
-rw-r--r--synapse/storage/events.py2
3 files changed, 7 insertions, 2 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/handlers/federation.py b/synapse/handlers/federation.py
index 1e3dccf5a8..4ff20599d6 100644
--- a/synapse/handlers/federation.py
+++ b/synapse/handlers/federation.py
@@ -874,7 +874,7 @@ class FederationHandler(BaseHandler):
                 raise AuthError(403, "Host not in room.")
 
         state_groups = yield self.store.get_state_groups(
-            [event_id]
+            room_id, [event_id]
         )
 
         if state_groups:
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: