From 486b43f09dd6440e865b4d0f946ae3f3620d8ef1 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 24 Nov 2020 17:32:52 -0500 Subject: [PATCH] Avoid unmarking for archival an empty contact in Protocol\ActivityPub\Receiver - Address https://github.com/friendica/friendica/issues/9250#issuecomment-733198306 --- src/Protocol/ActivityPub/Receiver.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index d1426ff5ae..af6eb56cee 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -99,13 +99,15 @@ class Receiver $actor = JsonLD::fetchElement($ldactivity, 'as:actor', '@id'); $apcontact = APContact::getByURL($actor); - if (!empty($apcontact) && ($apcontact['type'] == 'Application') && ($apcontact['nick'] == 'relay')) { + if (empty($apcontact)) { + Logger::notice('Unable to retrieve AP contact for actor', ['actor' => $actor]); + } elseif ($apcontact['type'] == 'Application' && $apcontact['nick'] == 'relay') { self::processRelayPost($ldactivity, $actor); return; + } else { + APContact::unmarkForArchival($apcontact); } - APContact::unMarkForArchival($apcontact); - $http_signer = HTTPSignature::getSigner($body, $header); if (empty($http_signer)) { Logger::warning('Invalid HTTP signature, message will be discarded.'); @@ -235,7 +237,7 @@ class Receiver $profile = APContact::getByURL($object_id); if (!empty($profile['type'])) { - APContact::unMarkForArchival($profile); + APContact::unmarkForArchival($profile); return 'as:' . $profile['type']; }