diff options
author | Richard van der Hoff <richard@matrix.org> | 2019-07-25 18:46:44 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2019-07-25 18:46:44 +0100 |
commit | 70e18cee00dff6a6a5575e8055bab0c45e3870a9 (patch) | |
tree | a631af4c02fc98018f3ee3c8fe8b5649fe375faf /synapse | |
parent | 1.2.0 (diff) | |
parent | log when a redaction attempts to redact an event in a different room (diff) | |
download | synapse-70e18cee00dff6a6a5575e8055bab0c45e3870a9.tar.xz |
Merge branch 'rav/redactions/cross_room_id' into release-v1.2.1
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/storage/events_worker.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/synapse/storage/events_worker.py b/synapse/storage/events_worker.py index 858fc755a1..7dbb5df09a 100644 --- a/synapse/storage/events_worker.py +++ b/synapse/storage/events_worker.py @@ -268,6 +268,14 @@ class EventsWorkerStore(SQLBaseStore): ) continue + if original_event.room_id != entry.event.room_id: + logger.info( + "Withholding redaction %s of event %s from a different room", + event_id, + redacted_event_id, + ) + continue + if entry.event.internal_metadata.need_to_check_redaction(): original_domain = get_domain_from_id(original_event.sender) redaction_domain = get_domain_from_id(entry.event.sender) @@ -636,9 +644,21 @@ class EventsWorkerStore(SQLBaseStore): if not redaction_entry: # we don't have the redaction event, or the redaction event was not # authorized. + logger.debug( + "%s was redacted by %s but redaction not found/authed", + original_ev.event_id, + redaction_id, + ) continue redaction_event = redaction_entry.event + if redaction_event.room_id != original_ev.room_id: + logger.debug( + "%s was redacted by %s but redaction was in a different room!", + original_ev.event_id, + redaction_id, + ) + continue # Starting in room version v3, some redactions need to be # rechecked if we didn't have the redacted event at the @@ -650,8 +670,15 @@ class EventsWorkerStore(SQLBaseStore): redaction_event.internal_metadata.recheck_redaction = False else: # Senders don't match, so the event isn't actually redacted + logger.debug( + "%s was redacted by %s but the senders don't match", + original_ev.event_id, + redaction_id, + ) continue + logger.debug("Redacting %s due to %s", original_ev.event_id, redaction_id) + # we found a good redaction event. Redact! redacted_event = prune_event(original_ev) redacted_event.unsigned["redacted_by"] = redaction_id |