about summary refs log tree commit diff
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2017-09-14 00:05:25 +0200
committerEugen Rochko <eugen@zeonfederated.com>2017-09-14 00:05:25 +0200
commitaf00220d795670e10bc8c7378837c4a5a287b556 (patch)
tree2af132699498d374150f27351d2d9d07db9b14fb
parent9239e4ce4d4e958e62552d4a01183d0295c020f5 (diff)
Fix refollowing (#4931)
* Make RefollowWorker ActivityPub-only to avoid potential identifier mismatches

* Don't call RefollowWorker on new accounts
-rw-r--r--app/services/activitypub/process_account_service.rb4
-rw-r--r--app/services/resolve_remote_account_service.rb2
-rw-r--r--app/workers/refollow_worker.rb1
3 files changed, 3 insertions, 4 deletions
diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb
index badb26720..a45681078 100644
--- a/app/services/activitypub/process_account_service.rb
+++ b/app/services/activitypub/process_account_service.rb
@@ -15,11 +15,11 @@ class ActivityPub::ProcessAccountService < BaseService
     @account     = Account.find_by(uri: @uri)
     @collections = {}
 
+    old_public_key = @account&.public_key
     create_account  if @account.nil?
     upgrade_account if @account.ostatus?
-    old_public_key = @account.public_key
     update_account
-    RefollowWorker.perform_async(@account.id) if old_public_key != @account.public_key
+    RefollowWorker.perform_async(@account.id) if !old_public_key.nil? && old_public_key != @account.public_key
 
     @account
   rescue Oj::ParseError
diff --git a/app/services/resolve_remote_account_service.rb b/app/services/resolve_remote_account_service.rb
index 753601501..7031c98f5 100644
--- a/app/services/resolve_remote_account_service.rb
+++ b/app/services/resolve_remote_account_service.rb
@@ -85,10 +85,8 @@ class ResolveRemoteAccountService < BaseService
 
   def handle_ostatus
     create_account if @account.nil?
-    old_public_key = @account.public_key
     update_account
     update_account_profile if update_profile?
-    RefollowWorker.perform_async(@account.id) if old_public_key != @account.public_key
   end
 
   def update_profile?
diff --git a/app/workers/refollow_worker.rb b/app/workers/refollow_worker.rb
index 9c42d4271..66bcd27c3 100644
--- a/app/workers/refollow_worker.rb
+++ b/app/workers/refollow_worker.rb
@@ -7,6 +7,7 @@ class RefollowWorker
 
   def perform(target_account_id)
     target_account = Account.find(target_account_id)
+    return unless target_account.protocol == :activitypub
 
     target_account.followers.where(domain: nil).find_each do |follower|
       # Locally unfollow remote account