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

View File

@ -729,10 +729,24 @@ class EventCreationHandler(object):
assert not self.config.worker_app assert not self.config.worker_app
if ratelimit: if ratelimit:
is_admin_redaction = ( # We check if this is a room admin redacting an event so that we
event.type == EventTypes.Redaction # can apply different ratelimiting. We do this by simply checking
and event.sender != requester.user.to_string() # 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( yield self.base_handler.ratelimit(
requester, is_admin_redaction=is_admin_redaction requester, is_admin_redaction=is_admin_redaction
) )