Check redaction state when event is pulled out of the database

This commit is contained in:
Erik Johnston 2019-01-29 21:46:17 +00:00
parent 6d23ec2111
commit 4db252c073
1 changed files with 13 additions and 0 deletions

View File

@ -466,6 +466,19 @@ class EventsWorkerStore(SQLBaseStore):
# will serialise this field correctly # will serialise this field correctly
redacted_event.unsigned["redacted_because"] = because redacted_event.unsigned["redacted_because"] = because
# Starting in room version v3, some redactions need to be
# rechecked if we didn't have the redacted event at the
# time, so we recheck on read instead.
if because.internal_metadata.need_to_check_redaction():
expected_domain = get_domain_from_id(original_ev.sender)
if get_domain_from_id(because.sender) == expected_domain:
# This redaction event is allowed. Mark as not needing a
# recheck.
because.internal_metadata.recheck_redaction = False
else:
# Senders don't match, so the event is actually redacted
redacted_event = None
cache_entry = _EventCacheEntry( cache_entry = _EventCacheEntry(
event=original_ev, event=original_ev,
redacted_event=redacted_event, redacted_event=redacted_event,