diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2021-04-24 13:35:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-24 13:35:39 +0200 |
commit | f4b7c6b61914070e590507bcb33e4345d3f9b0b9 (patch) | |
tree | 3db8d2c42a5ab005b7fc11eb34545e9a360ed0fd /app | |
parent | a6564d56d6af0467eb8cfa96444b4503f437e0a6 (diff) |
Fix nil error when removing status caused by race condition (#16099)
Diffstat (limited to 'app')
-rw-r--r-- | app/lib/status_reach_finder.rb | 2 | ||||
-rw-r--r-- | app/models/status.rb | 4 | ||||
-rw-r--r-- | app/workers/activitypub/distribution_worker.rb | 2 |
3 files changed, 6 insertions, 2 deletions
diff --git a/app/lib/status_reach_finder.rb b/app/lib/status_reach_finder.rb index 0e755d433..735d66a4f 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 74e81f612..847921ac2 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 9b4814644..09898ca49 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 |