diff options
author | Mark Haines <mark.haines@matrix.org> | 2015-12-14 14:09:21 +0000 |
---|---|---|
committer | Mark Haines <mark.haines@matrix.org> | 2015-12-14 14:09:21 +0000 |
commit | 834924248f4034a209271828d7cca47eee01f328 (patch) | |
tree | 0815db0cd962f67bfe984fdad0b1922fe510f756 /synapse | |
parent | Merge pull request #437 from matrix-org/markjh/parallel_sync (diff) | |
download | synapse-834924248f4034a209271828d7cca47eee01f328.tar.xz |
Check whether prev_content or prev_sender is set before trying to rollback state
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/rest/client/v2_alpha/sync.py | 21 |
1 files 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 |