diff --git a/src/Model/APContact.php b/src/Model/APContact.php index cfbfa683cf..b027d6c478 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -87,6 +87,8 @@ class APContact extends BaseObject return false; } + $fetched_contact = false; + if (empty($update)) { if (is_null($update)) { $ref_update = DateTimeFormat::utc('now - 1 month'); @@ -110,24 +112,28 @@ class APContact extends BaseObject if (!is_null($update)) { return DBA::isResult($apcontact) ? $apcontact : false; } + + if (DBA::isResult($apcontact)) { + $fetched_contact = $apcontact; + } } if (empty(parse_url($url, PHP_URL_SCHEME))) { $url = self::addrToUrl($url); if (empty($url)) { - return false; + return $fetched_contact; } } $data = ActivityPub::fetchContent($url); if (empty($data)) { - return false; + return $fetched_contact; } $compacted = JsonLD::compact($data); if (empty($compacted['@id'])) { - return false; + return $fetched_contact; } $apcontact = []; @@ -168,12 +174,12 @@ class APContact extends BaseObject // Quit if none of the basic values are set if (empty($apcontact['url']) || empty($apcontact['inbox']) || empty($apcontact['type'])) { - return false; + return $fetched_contact; } // Quit if this doesn't seem to be an account at all if (!in_array($apcontact['type'], ActivityPub::ACCOUNT_TYPES)) { - return false; + return $fetched_contact; } $parts = parse_url($apcontact['url']); diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index cafdfc7724..a3b8b679e3 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -1474,6 +1474,10 @@ class Transmitter public static function sendActivity($activity, $target, $uid, $id = '') { $profile = APContact::getByURL($target); + if (empty($profile['inbox'])) { + Logger::warning('No inbox found for target', ['target' => $target, 'profile' => $profile]); + return; + } $owner = User::getOwnerDataById($uid); @@ -1510,6 +1514,10 @@ class Transmitter public static function sendFollowObject($object, $target, $uid = 0) { $profile = APContact::getByURL($target); + if (empty($profile['inbox'])) { + Logger::warning('No inbox found for target', ['target' => $target, 'profile' => $profile]); + return; + } if (empty($uid)) { // Fetch the list of administrators @@ -1556,6 +1564,10 @@ class Transmitter public static function sendContactAccept($target, $id, $uid) { $profile = APContact::getByURL($target); + if (empty($profile['inbox'])) { + Logger::warning('No inbox found for target', ['target' => $target, 'profile' => $profile]); + return; + } $owner = User::getOwnerDataById($uid); $data = ['@context' => ActivityPub::CONTEXT, @@ -1589,6 +1601,10 @@ class Transmitter public static function sendContactReject($target, $id, $uid) { $profile = APContact::getByURL($target); + if (empty($profile['inbox'])) { + Logger::warning('No inbox found for target', ['target' => $target, 'profile' => $profile]); + return; + } $owner = User::getOwnerDataById($uid); $data = ['@context' => ActivityPub::CONTEXT, @@ -1622,6 +1638,10 @@ class Transmitter public static function sendContactUndo($target, $cid, $uid) { $profile = APContact::getByURL($target); + if (empty($profile['inbox'])) { + Logger::warning('No inbox found for target', ['target' => $target, 'profile' => $profile]); + return; + } $object_id = self::activityIDFromContact($cid); if (empty($object_id)) {