Fix duplicate accounts being created when fetching an account for its key only (#13147)
Fixes #13136 When a user's canonical acct domain is different from its id's domain (WEB_DOMAIN ≠ LOCAL_DOMAIN), two webfinger queries are required to find the canonical domain from the URI. However, we skip webfinger queries when updating only the key of a remote user, which led to the creation of a duplicate account, using the URI's domain instead of the canonical acct: one.
This commit is contained in:
		
							parent
							
								
									5158dbeb25
								
							
						
					
					
						commit
						3704402dcc
					
				@ -18,9 +18,10 @@ class ActivityPub::ProcessAccountService < BaseService
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    RedisLock.acquire(lock_options) do |lock|
 | 
					    RedisLock.acquire(lock_options) do |lock|
 | 
				
			||||||
      if lock.acquired?
 | 
					      if lock.acquired?
 | 
				
			||||||
        @account        = Account.find_remote(@username, @domain)
 | 
					        @account          = Account.remote.find_by(uri: @uri) if @options[:only_key]
 | 
				
			||||||
        @old_public_key = @account&.public_key
 | 
					        @account        ||= Account.find_remote(@username, @domain)
 | 
				
			||||||
        @old_protocol   = @account&.protocol
 | 
					        @old_public_key   = @account&.public_key
 | 
				
			||||||
 | 
					        @old_protocol     = @account&.protocol
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        create_account if @account.nil?
 | 
					        create_account if @account.nil?
 | 
				
			||||||
        update_account
 | 
					        update_account
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user