From 3f8e4e787a53be9bb888196583e79770e1b70309 Mon Sep 17 00:00:00 2001 From: Brendan Abolivier Date: Wed, 1 Sep 2021 17:53:36 +0100 Subject: [PATCH] Don't ratelimit when admin updates profile --- synapse/handlers/profile.py | 8 +++++--- synapse/handlers/register.py | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/synapse/handlers/profile.py b/synapse/handlers/profile.py index a524ab4fef..15a4267d00 100644 --- a/synapse/handlers/profile.py +++ b/synapse/handlers/profile.py @@ -326,7 +326,8 @@ class ProfileHandler(BaseHandler): target_user.to_string(), profile ) - await self._update_join_states(requester, target_user) + # Don't ratelimit when the admin makes the change. + await self._update_join_states(requester, target_user, ratelimit=not by_admin) # start a profile replication push run_in_background(self._replicate_profiles) @@ -551,12 +552,13 @@ class ProfileHandler(BaseHandler): return response async def _update_join_states( - self, requester: Requester, target_user: UserID + self, requester: Requester, target_user: UserID, ratelimit: bool = True, ) -> None: if not self.hs.is_mine(target_user): return - await self.ratelimit(requester) + if ratelimit: + await self.ratelimit(requester) # Do not actually update the room state for shadow-banned users. if requester.shadow_banned: diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py index 6d35bc0a2b..81edbcd79e 100644 --- a/synapse/handlers/register.py +++ b/synapse/handlers/register.py @@ -288,6 +288,9 @@ class RegistrationHandler(BaseHandler): if default_display_name: requester = create_requester(user) + # FIXME: this is DINUM-specific code to update DINUM's custom + # Sydent-powered userdir, and needed some custom changes to ignore + # the ratelimiter. await self.profile_handler.set_displayname( user, requester, default_display_name, by_admin=True )