diff options
author | Richard van der Hoff <richard@matrix.org> | 2020-10-13 15:44:54 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2020-10-13 21:38:48 +0100 |
commit | 123711ed198bd5cf9984818f8bac1926ed1af5fa (patch) | |
tree | 0f968cac045de4dc49def2431a3aaf39719a820c /synapse/handlers/message.py | |
parent | Remove redundant calls to third_party_rules in `on_send_{join,leave}` (diff) | |
download | synapse-123711ed198bd5cf9984818f8bac1926ed1af5fa.tar.xz |
Move third_party_rules check to event creation time
Rather than waiting until we handle the event, call the ThirdPartyRules check when we fist create the event.
Diffstat (limited to 'synapse/handlers/message.py')
-rw-r--r-- | synapse/handlers/message.py | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py index c52e6824d3..987c759791 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py @@ -795,6 +795,17 @@ class EventCreationHandler: if requester: context.app_service = requester.app_service + event_allowed = await self.third_party_event_rules.check_event_allowed( + event, context + ) + if not event_allowed: + logger.info( + "Event %s forbidden by third-party rules", event, + ) + raise SynapseError( + 403, "This event is not allowed in this context", Codes.FORBIDDEN + ) + self.validator.validate_new(event, self.config) # If this event is an annotation then we check that that the sender @@ -881,14 +892,6 @@ class EventCreationHandler: else: room_version = await self.store.get_room_version_id(event.room_id) - event_allowed = await self.third_party_event_rules.check_event_allowed( - event, context - ) - if not event_allowed: - raise SynapseError( - 403, "This event is not allowed in this context", Codes.FORBIDDEN - ) - if event.internal_metadata.is_out_of_band_membership(): # the only sort of out-of-band-membership events we expect to see here # are invite rejections we have generated ourselves. |