]> git.mxchange.org Git - friendica.git/commitdiff
Fix for falsely detected AP profile in case of timeout
authorMichael <heluecht@pirati.ca>
Tue, 12 Mar 2019 05:21:04 +0000 (05:21 +0000)
committerMichael <heluecht@pirati.ca>
Tue, 12 Mar 2019 05:21:04 +0000 (05:21 +0000)
src/Network/Probe.php

index b061595d263d7e579f92cb9fc53254d868ab2ffa..135c36b744dffeef4b2f26be778ea2e5119f1e4e 100644 (file)
@@ -35,6 +35,7 @@ use DomXPath;
 class Probe
 {
        private static $baseurl;
+       private static $istimeout;
 
        /**
         * @brief Rearrange the array so that it always has the same order
@@ -124,6 +125,7 @@ class Probe
                        $curlResult = Network::curl($url, false, $redirects, ['timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml']);
                        if ($curlResult->isTimeout()) {
                                Logger::log("Probing timeout for " . $url, Logger::DEBUG);
+                               self::$istimeout = true;
                                return false;
                        }
                        $xml = $curlResult->getBody();
@@ -334,16 +336,22 @@ class Probe
                        $uid = local_user();
                }
 
+               self::$istimeout = false;
+
                if ($network != Protocol::ACTIVITYPUB) {
                        $data = self::detect($uri, $network, $uid);
                } else {
                        $data = null;
                }
 
-               $ap_profile = ActivityPub::probeProfile($uri);
+               // When the previous detection process had got a time out
+               // we could falsely detect a Friendica profile as AP profile.
+               if (!self::$istimeout) {
+                       $ap_profile = ActivityPub::probeProfile($uri);
 
-               if (!empty($ap_profile) && empty($network) && (defaults($data, 'network', '') != Protocol::DFRN)) {
-                       $data = $ap_profile;
+                       if (!empty($ap_profile) && empty($network) && (defaults($data, 'network', '') != Protocol::DFRN)) {
+                               $data = $ap_profile;
+                       }
                }
 
                if (!isset($data['url'])) {
@@ -756,6 +764,7 @@ class Probe
 
                $curlResult = Network::curl($url, false, $redirects, ['timeout' => $xrd_timeout, 'accept_content' => $type]);
                if ($curlResult->isTimeout()) {
+                       self::$istimeout = true;
                        return false;
                }
                $data = $curlResult->getBody();
@@ -824,6 +833,7 @@ class Probe
        {
                $curlResult = Network::curl($noscrape_url);
                if ($curlResult->isTimeout()) {
+                       self::$istimeout = true;
                        return false;
                }
                $content = $curlResult->getBody();
@@ -1075,6 +1085,7 @@ class Probe
        {
                $curlResult = Network::curl($hcard_url);
                if ($curlResult->isTimeout()) {
+                       self::$istimeout = true;
                        return false;
                }
                $content = $curlResult->getBody();
@@ -1327,6 +1338,7 @@ class Probe
                                        } elseif (Strings::normaliseLink($pubkey) == 'http://') {
                                                $curlResult = Network::curl($pubkey);
                                                if ($curlResult->isTimeout()) {
+                                                       self::$istimeout = true;
                                                        return false;
                                                }
                                                $pubkey = $curlResult->getBody();
@@ -1359,6 +1371,7 @@ class Probe
                // Fetch all additional data from the feed
                $curlResult = Network::curl($data["poll"]);
                if ($curlResult->isTimeout()) {
+                       self::$istimeout = true;
                        return false;
                }
                $feed = $curlResult->getBody();
@@ -1573,6 +1586,7 @@ class Probe
        {
                $curlResult = Network::curl($url);
                if ($curlResult->isTimeout()) {
+                       self::$istimeout = true;
                        return false;
                }
                $feed = $curlResult->getBody();