summary refs log tree commit diff
path: root/synapse/handlers/room_member.py
diff options
context:
space:
mode:
authorAndrew Morgan <andrew@amorgan.xyz>2021-04-22 19:02:12 +0100
committerAndrew Morgan <andrew@amorgan.xyz>2021-04-22 19:02:12 +0100
commitd06a48b4bed8c17c82812ec2993c0d3766bda050 (patch)
tree773d04d8c0c4d5178947bf7c9eea32dbc060e504 /synapse/handlers/room_member.py
parentMerge commit 'e288499c6' into anoa/dinsic_release_1_31_0 (diff)
parentFix escaping of braces in OIDC sample config. (#9317) (diff)
downloadsynapse-d06a48b4bed8c17c82812ec2993c0d3766bda050.tar.xz
Merge commit '2ab6e67ab' into anoa/dinsic_release_1_31_0
Diffstat (limited to 'synapse/handlers/room_member.py')
-rw-r--r--synapse/handlers/room_member.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py

index a92f7ba012..eb3193e554 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py
@@ -198,10 +198,14 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): """ raise NotImplementedError() - def ratelimit_invite(self, room_id: str, invitee_user_id: str): + def ratelimit_invite(self, room_id: Optional[str], invitee_user_id: str): """Ratelimit invites by room and by target user. + + If room ID is missing then we just rate limit by target user. """ - self._invites_per_room_limiter.ratelimit(room_id) + if room_id: + self._invites_per_room_limiter.ratelimit(room_id) + self._invites_per_user_limiter.ratelimit(invitee_user_id) async def _local_membership_update( @@ -452,7 +456,9 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): if effective_membership_state == Membership.INVITE: target_id = target.to_string() if ratelimit: - self.ratelimit_invite(room_id, target_id) + # Don't ratelimit application services. + if not requester.app_service or requester.app_service.is_rate_limited(): + self.ratelimit_invite(room_id, target_id) # block any attempts to invite the server notices mxid if target_id == self._server_notices_mxid: