From 834924248f4034a209271828d7cca47eee01f328 Mon Sep 17 00:00:00 2001
From: Mark Haines <mark.haines@matrix.org>
Date: Mon, 14 Dec 2015 14:09:21 +0000
Subject: [PATCH] Check whether prev_content or prev_sender is set before
 trying to rollback state

---
 synapse/rest/client/v2_alpha/sync.py | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/synapse/rest/client/v2_alpha/sync.py b/synapse/rest/client/v2_alpha/sync.py
index f0a637a6da..7cba981c04 100644
--- a/synapse/rest/client/v2_alpha/sync.py
+++ b/synapse/rest/client/v2_alpha/sync.py
@@ -357,14 +357,19 @@ class SyncRestServlet(RestServlet):
             if prev_event_id is None:
                 del result[event_key]
             else:
-                result[event_key] = FrozenEvent({
-                    "type": timeline_event.type,
-                    "state_key": timeline_event.state_key,
-                    "content": timeline_event.unsigned['prev_content'],
-                    "sender": timeline_event.unsigned['prev_sender'],
-                    "event_id": prev_event_id,
-                    "room_id": timeline_event.room_id,
-                })
+                prev_content = timeline_event.unsigned.get('prev_content')
+                prev_sender = timeline_event.unsigned.get('prev_sender')
+                if prev_content and prev_sender:
+                    result[event_key] = FrozenEvent({
+                        "type": timeline_event.type,
+                        "state_key": timeline_event.state_key,
+                        "content": prev_content,
+                        "sender": prev_sender,
+                        "event_id": prev_event_id,
+                        "room_id": timeline_event.room_id,
+                    })
+                else:
+                    del result[event_key]
             logger.debug("New value: %r", result.get(event_key))
 
         return result
-- 
GitLab