summary refs log tree commit diff
path: root/synapse/storage
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-02-02 16:56:01 +0000
committerErik Johnston <erik@matrix.org>2015-02-02 16:56:01 +0000
commit941f59101b51e9225dbdc38b22110a01de194242 (patch)
tree19a4a47423c92a77be63c8956101880b3ebc80b6 /synapse/storage
parentIgnore empty strings for display names & room names in notifications (diff)
downloadsynapse-941f59101b51e9225dbdc38b22110a01de194242.tar.xz
Don't fail an entire request if one of the returned events fails a signature check. If an event does fail a signature check, look in the local database and request it from the originator.
Diffstat (limited to 'synapse/storage')
-rw-r--r--synapse/storage/__init__.py21
1 files changed, 13 insertions, 8 deletions
diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py

index 7c54b1b9d3..b4a7a3f068 100644 --- a/synapse/storage/__init__.py +++ b/synapse/storage/__init__.py
@@ -128,16 +128,21 @@ class DataStore(RoomMemberStore, RoomStore, pass @defer.inlineCallbacks - def get_event(self, event_id, allow_none=False): - events = yield self._get_events([event_id]) + def get_event(self, event_id, check_redacted=True, + get_prev_content=False, allow_rejected=False, + allow_none=False): + event = yield self.runInteraction( + "get_event", self._get_event_txn, + event_id, + check_redacted=check_redacted, + get_prev_content=get_prev_content, + allow_rejected=allow_rejected, + ) - if not events: - if allow_none: - defer.returnValue(None) - else: - raise RuntimeError("Could not find event %s" % (event_id,)) + if not event and not allow_none: + raise RuntimeError("Could not find event %s" % (event_id,)) - defer.returnValue(events[0]) + defer.returnValue(event) @log_function def _persist_event_txn(self, txn, event, context, backfilled,