about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2022-10-29 01:31:45 +0200
committerGitHub <noreply@github.com>2022-10-29 01:31:45 +0200
commitdc5c86add78e03c7c53cf89d084c5e40f533cbc4 (patch)
treec2ead571b79c38f4710f2d466fca6dae3ccbd285 /app
parent317ec06dc791bfbd9eb86177b3027ca92d683b8b (diff)
Fix account migration form ever using outdated account data (#18429)
Diffstat (limited to 'app')
-rw-r--r--app/models/form/redirect.rb2
-rw-r--r--app/services/resolve_account_service.rb3
2 files changed, 3 insertions, 2 deletions
diff --git a/app/models/form/redirect.rb b/app/models/form/redirect.rb
index 19ee9faed..795fdd057 100644
--- a/app/models/form/redirect.rb
+++ b/app/models/form/redirect.rb
@@ -31,7 +31,7 @@ class Form::Redirect
   private
 
   def set_target_account
-    @target_account = ResolveAccountService.new.call(acct)
+    @target_account = ResolveAccountService.new.call(acct, skip_cache: true)
   rescue Webfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::Error
     # Validation will take care of it
   end
diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb
index e3b370968..d8b81a7b9 100644
--- a/app/services/resolve_account_service.rb
+++ b/app/services/resolve_account_service.rb
@@ -12,6 +12,7 @@ class ResolveAccountService < BaseService
   # @param [Hash] options
   # @option options [Boolean] :redirected Do not follow further Webfinger redirects
   # @option options [Boolean] :skip_webfinger Do not attempt any webfinger query or refreshing account data
+  # @option options [Boolean] :skip_cache Get the latest data from origin even if cache is not due to update yet
   # @option options [Boolean] :suppress_errors When failing, return nil instead of raising an error
   # @return [Account]
   def call(uri, options = {})
@@ -120,7 +121,7 @@ class ResolveAccountService < BaseService
     return false if @options[:check_delivery_availability] && !DeliveryFailureTracker.available?(@domain)
     return false if @options[:skip_webfinger]
 
-    @account.nil? || @account.possibly_stale?
+    @options[:skip_cache] || @account.nil? || @account.possibly_stale?
   end
 
   def activitypub_ready?