From 23671fbffc9340b7c68fbd32be7076894eee7453 Mon Sep 17 00:00:00 2001 From: unarist Date: Sat, 16 Sep 2017 22:00:36 +0900 Subject: [PATCH] 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. --- app/serializers/activitypub/note_serializer.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb index 7d53537b50..166214eee5 100644 --- a/app/serializers/activitypub/note_serializer.rb +++ b/app/serializers/activitypub/note_serializer.rb @@ -27,7 +27,7 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer end 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') ActivityPub::TagManager.instance.uri_for(object.thread) @@ -67,7 +67,7 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer end def in_reply_to_atom_uri - return unless object.reply? + return unless object.reply? && !object.thread.nil? ::TagManager.instance.uri_for(object.thread) end