Fix how we check for self redaction

This commit is contained in:
Erik Johnston 2019-09-11 11:16:17 +01:00
parent 8df88b5ff3
commit c64c3bb4c5
1 changed files with 18 additions and 4 deletions

View File

@ -729,10 +729,24 @@ class EventCreationHandler(object):
assert not self.config.worker_app
if ratelimit:
is_admin_redaction = (
event.type == EventTypes.Redaction
and event.sender != requester.user.to_string()
)
# We check if this is a room admin redacting an event so that we
# can apply different ratelimiting. We do this by simply checking
# its not a self-redaction (to avoid having to look up whether the
# user is actually admin or not).
is_admin_redaction = False
if event.type == EventTypes.Redaction:
original_event = yield self.store.get_event(
event.redacts,
check_redacted=False,
get_prev_content=False,
allow_rejected=False,
allow_none=True,
)
is_admin_redaction = (
original_event and event.sender != original_event.sender
)
yield self.base_handler.ratelimit(
requester, is_admin_redaction=is_admin_redaction
)