diff options
author | Claire <claire.github-309c@sitedethib.com> | 2023-01-05 13:47:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-05 13:47:21 +0100 |
commit | 18fb01ef7ca3829b07bb8ea101bdd073da72cfbc (patch) | |
tree | 5e493ef3997176e4a98be57ee68068d427176906 /app/services | |
parent | 8683a082ddc04b2028b73a039325fd70fe3c55a9 (diff) |
Fix possible race conditions when suspending/unsuspending accounts (#22363)
* Fix possible race conditions when suspending/unsuspending accounts * Fix tests Tests were assuming SuspensionWorker and UnsuspensionWorker would do the suspending/unsuspending themselves, but this has changed.
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/suspend_account_service.rb | 9 | ||||
-rw-r--r-- | app/services/unsuspend_account_service.rb | 8 |
2 files changed, 7 insertions, 10 deletions
diff --git a/app/services/suspend_account_service.rb b/app/services/suspend_account_service.rb index 6856c2c51..211544fea 100644 --- a/app/services/suspend_account_service.rb +++ b/app/services/suspend_account_service.rb @@ -3,10 +3,13 @@ class SuspendAccountService < BaseService include Payloadable + # Carry out the suspension of a recently-suspended account + # @param [Account] account Account to suspend def call(account) + return unless account.suspended? + @account = account - suspend! reject_remote_follows! distribute_update_actor! unmerge_from_home_timelines! @@ -16,10 +19,6 @@ class SuspendAccountService < BaseService private - def suspend! - @account.suspend! unless @account.suspended? - end - def reject_remote_follows! return if @account.local? || !@account.activitypub? diff --git a/app/services/unsuspend_account_service.rb b/app/services/unsuspend_account_service.rb index 534203dce..70667308e 100644 --- a/app/services/unsuspend_account_service.rb +++ b/app/services/unsuspend_account_service.rb @@ -2,10 +2,12 @@ class UnsuspendAccountService < BaseService include Payloadable + + # Restores a recently-unsuspended account + # @param [Account] account Account to restore def call(account) @account = account - unsuspend! refresh_remote_account! return if @account.nil? || @account.suspended? @@ -18,10 +20,6 @@ class UnsuspendAccountService < BaseService private - def unsuspend! - @account.unsuspend! if @account.suspended? - end - def refresh_remote_account! return if @account.local? |