]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #7284 from annando/fix-fatal
authorHypolite Petovan <hypolite@mrpetovan.com>
Thu, 20 Jun 2019 03:42:21 +0000 (23:42 -0400)
committerGitHub <noreply@github.com>
Thu, 20 Jun 2019 03:42:21 +0000 (23:42 -0400)
Don't send activities to "null" endpoints

src/Model/APContact.php
src/Protocol/ActivityPub/Transmitter.php

index cfbfa683cff030005dddd3e4c1a207769210188f..b027d6c47810d61096b44a1661924930bc1fea2e 100644 (file)
@@ -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']);
index cafdfc77248d3dd45427ce737c0abfca7b0f666a..a3b8b679e3b9d0350fe6704880a49ea43992ab23 100644 (file)
@@ -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)) {