about summary refs log tree commit diff
path: root/app/lib/activitypub/activity/create.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/lib/activitypub/activity/create.rb')
-rw-r--r--app/lib/activitypub/activity/create.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index 140226481..37aac4d59 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -5,6 +5,14 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
     return if autoreject?
     return reject_payload! if unsupported_object_type? || !@options[:imported] && (invalid_origin?(@object['id']) || Tombstone.exists?(uri: @object['id']) || !related_to_local_activity?)
 
+    unless known?
+      if @options[:announced_by].nil?
+        return reject_payload! if !@options[:requested] && rejecting_unknown?
+      else
+        @account.mark_known! if known?(@options[:announced_by])
+      end
+    end
+
     RedisLock.acquire(lock_options) do |lock|
       if lock.acquired?
         return if !@options[:imported] && (delete_arrived_first?(object_uri) || poll_vote?)