Fix AP serialization error when thread is missing (#4970)

`Status#reply?` may returns true even if the thread is missing.
e.g. the replied status was deleted or couldn't be fetched.

Then it raises NoMethodError on various AP json serialization.

This issue won't happen on Atom serialization because it checks thread
existence using `StreamEntry#threaded?` instead.
lolsob-rspec
unarist 2017-09-16 22:00:36 +09:00 committed by Eugen Rochko
parent eda52774d0
commit 23671fbffc
1 changed files with 2 additions and 2 deletions

View File

@ -27,7 +27,7 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
end end
def in_reply_to def in_reply_to
return unless object.reply? return unless object.reply? && !object.thread.nil?
if object.thread.uri.nil? || object.thread.uri.start_with?('http') if object.thread.uri.nil? || object.thread.uri.start_with?('http')
ActivityPub::TagManager.instance.uri_for(object.thread) ActivityPub::TagManager.instance.uri_for(object.thread)
@ -67,7 +67,7 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
end end
def in_reply_to_atom_uri def in_reply_to_atom_uri
return unless object.reply? return unless object.reply? && !object.thread.nil?
::TagManager.instance.uri_for(object.thread) ::TagManager.instance.uri_for(object.thread)
end end