summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2021-04-24 13:35:39 +0200
committerGitHub <noreply@github.com>2021-04-24 13:35:39 +0200
commitf4b7c6b61914070e590507bcb33e4345d3f9b0b9 (patch)
tree3db8d2c42a5ab005b7fc11eb34545e9a360ed0fd
parenta6564d56d6af0467eb8cfa96444b4503f437e0a6 (diff)
Fix nil error when removing status caused by race condition (#16099)
-rw-r--r--app/lib/status_reach_finder.rb2
-rw-r--r--app/models/status.rb4
-rw-r--r--app/workers/activitypub/distribution_worker.rb2
3 files changed, 6 insertions, 2 deletions
diff --git a/app/lib/status_reach_finder.rb b/app/lib/status_reach_finder.rb
index 0e755d433f3..735d66a4f78 100644
--- a/app/lib/status_reach_finder.rb
+++ b/app/lib/status_reach_finder.rb
@@ -62,7 +62,7 @@ class StatusReachFinder
end
def followers_inboxes
- if @status.reply? && @status.thread.account.local? && @status.distributable?
+ if @status.in_reply_to_local_account? && @status.distributable?
@status.account.followers.or(@status.thread.account.followers).inboxes
else
@status.account.followers.inboxes
diff --git a/app/models/status.rb b/app/models/status.rb
index 74e81f6127c..847921ac233 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -161,6 +161,10 @@ class Status < ApplicationRecord
attributes['local'] || uri.nil?
end
+ def in_reply_to_local_account?
+ reply? && thread&.account&.local?
+ end
+
def reblog?
!reblog_of_id.nil?
end
diff --git a/app/workers/activitypub/distribution_worker.rb b/app/workers/activitypub/distribution_worker.rb
index 9b4814644f2..09898ca49ee 100644
--- a/app/workers/activitypub/distribution_worker.rb
+++ b/app/workers/activitypub/distribution_worker.rb
@@ -35,7 +35,7 @@ class ActivityPub::DistributionWorker
# Deliver the status to all followers.
# If the status is a reply to another local status, also forward it to that
# status' authors' followers.
- @inboxes ||= if @status.reply? && @status.thread.account.local? && @status.distributable?
+ @inboxes ||= if @status.in_reply_to_local_account? && @status.distributable?
@account.followers.or(@status.thread.account.followers).inboxes
else
@account.followers.inboxes