diff options
author | Erik Johnston <erik@matrix.org> | 2015-02-02 16:56:01 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2015-02-02 16:56:01 +0000 |
commit | 941f59101b51e9225dbdc38b22110a01de194242 (patch) | |
tree | 19a4a47423c92a77be63c8956101880b3ebc80b6 /synapse/storage/__init__.py | |
parent | Ignore empty strings for display names & room names in notifications (diff) | |
download | synapse-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/__init__.py')
-rw-r--r-- | synapse/storage/__init__.py | 21 |
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, |