Fix #3633 by not spawning RemoteProfileUpdateWorker from FetchRemoteAccountService (#3642)

rebase/4.0.0rc2
ThibG 2017-06-15 11:04:23 +02:00 committed by Eugen Rochko
parent 947887f261
commit 51b2f789bd
3 changed files with 6 additions and 6 deletions

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
module AuthorExtractor module AuthorExtractor
def author_from_xml(xml) def author_from_xml(xml, update_profile = true)
return nil if xml.nil? return nil if xml.nil?
# Try <email> for acct # Try <email> for acct
@ -18,6 +18,6 @@ module AuthorExtractor
acct = "#{username}@#{domain}" acct = "#{username}@#{domain}"
end end
FollowRemoteAccountService.new.call(acct) FollowRemoteAccountService.new.call(acct, update_profile)
end end
end end

View File

@ -21,7 +21,7 @@ class FetchRemoteAccountService < BaseService
xml = Nokogiri::XML(body) xml = Nokogiri::XML(body)
xml.encoding = 'utf-8' xml.encoding = 'utf-8'
account = author_from_xml(xml.at_xpath('/xmlns:feed', xmlns: TagManager::XMLNS)) account = author_from_xml(xml.at_xpath('/xmlns:feed', xmlns: TagManager::XMLNS), false)
UpdateRemoteProfileService.new.call(xml, account) unless account.nil? UpdateRemoteProfileService.new.call(xml, account) unless account.nil?

View File

@ -11,7 +11,7 @@ class FollowRemoteAccountService < BaseService
# important information from their feed # important information from their feed
# @param [String] uri User URI in the form of username@domain # @param [String] uri User URI in the form of username@domain
# @return [Account] # @return [Account]
def call(uri, redirected = nil) def call(uri, update_profile = true, redirected = nil)
username, domain = uri.split('@') username, domain = uri.split('@')
return Account.find_local(username) if TagManager.instance.local_domain?(domain) return Account.find_local(username) if TagManager.instance.local_domain?(domain)
@ -29,7 +29,7 @@ class FollowRemoteAccountService < BaseService
confirmed_username, confirmed_domain = data.subject.gsub(/\Aacct:/, '').split('@') confirmed_username, confirmed_domain = data.subject.gsub(/\Aacct:/, '').split('@')
unless confirmed_username.casecmp(username).zero? && confirmed_domain.casecmp(domain).zero? unless confirmed_username.casecmp(username).zero? && confirmed_domain.casecmp(domain).zero?
return call("#{confirmed_username}@#{confirmed_domain}", true) if redirected.nil? return call("#{confirmed_username}@#{confirmed_domain}", update_profile, true) if redirected.nil?
raise Goldfinger::Error, 'Requested and returned acct URI do not match' raise Goldfinger::Error, 'Requested and returned acct URI do not match'
end end
@ -63,7 +63,7 @@ class FollowRemoteAccountService < BaseService
begin begin
account.save! account.save!
get_profile(body, account) get_profile(body, account) if update_profile
rescue ActiveRecord::RecordNotUnique rescue ActiveRecord::RecordNotUnique
# The account has been added by another worker! # The account has been added by another worker!
return Account.find_remote(confirmed_username, confirmed_domain) return Account.find_remote(confirmed_username, confirmed_domain)