From a4055d084c406df30cdea1d95f9dee00eea73c4e Mon Sep 17 00:00:00 2001 From: "Olivier Wilkinson (reivilibre)" Date: Wed, 15 Jun 2022 15:43:33 +0100 Subject: [PATCH 1/2] Use the ratelimit() shorthand in more places --- synapse/handlers/room_member.py | 30 +++--------------------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py index e89b7441adff..bf6bae123273 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py @@ -26,13 +26,7 @@ GuestAccess, Membership, ) -from synapse.api.errors import ( - AuthError, - Codes, - LimitExceededError, - ShadowBanError, - SynapseError, -) +from synapse.api.errors import AuthError, Codes, ShadowBanError, SynapseError from synapse.api.ratelimiting import Ratelimiter from synapse.event_auth import get_named_level, get_power_level_event from synapse.events import EventBase @@ -380,16 +374,7 @@ async def _local_membership_update( # Only rate-limit if the user actually joined the room, otherwise we'll end # up blocking profile updates. if newly_joined and ratelimit: - time_now_s = self.clock.time() - ( - allowed, - time_allowed, - ) = await self._join_rate_limiter_local.can_do_action(requester) - - if not allowed: - raise LimitExceededError( - retry_after_ms=int(1000 * (time_allowed - time_now_s)) - ) + await self._join_rate_limiter_local.ratelimit(requester) result_event = await self.event_creation_handler.handle_new_client_event( requester, @@ -835,19 +820,10 @@ async def update_membership_locked( ) if remote_join: if ratelimit: - time_now_s = self.clock.time() - ( - allowed, - time_allowed, - ) = await self._join_rate_limiter_remote.can_do_action( + await self._join_rate_limiter_remote.ratelimit( requester, ) - if not allowed: - raise LimitExceededError( - retry_after_ms=int(1000 * (time_allowed - time_now_s)) - ) - inviter = await self._get_inviter(target.to_string(), room_id) if inviter and not self.hs.is_mine(inviter): remote_room_hosts.append(inviter.domain) From 842ccc016a06a727927de9244fa065da435256ee Mon Sep 17 00:00:00 2001 From: "Olivier Wilkinson (reivilibre)" Date: Wed, 15 Jun 2022 15:44:35 +0100 Subject: [PATCH 2/2] Newsfile Signed-off-by: Olivier Wilkinson (reivilibre) --- changelog.d/13070.misc | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/13070.misc diff --git a/changelog.d/13070.misc b/changelog.d/13070.misc new file mode 100644 index 000000000000..ce1f14342d85 --- /dev/null +++ b/changelog.d/13070.misc @@ -0,0 +1 @@ +Reduce the duplication of code that invokes the rate limiter. \ No newline at end of file