]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
HTTPClient would return null instead of exception
authorMikael Nordfeldth <mmn@hethane.se>
Mon, 11 Jan 2016 01:36:59 +0000 (02:36 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Mon, 11 Jan 2016 01:36:59 +0000 (02:36 +0100)
This caused $response->isOK() tests to call a function on a non-existing object, causing all hell to break loose.

lib/httpclient.php
lib/queuemonitor.php
plugins/OStatus/lib/discoveryhints.php
plugins/OStatus/tests/slap.php

index 3de88e2259ea3507946a7fd37c7445fa8440b34e..dce8e821ff4714660c52d16265b8d9178ac90c7b 100644 (file)
@@ -194,7 +194,7 @@ class HTTPClient extends HTTP_Request2
         }
         $response = $client->get($url);
         if (!$response->isOk()) {
-            // TRANS: Exception. %s is a profile URL.
+            // TRANS: Exception. %s is the URL we tried to GET.
             throw new Exception(sprintf(_m('Could not GET URL %s.'), $url), $response->getStatus());
         }
         return $response->getBody();
@@ -288,6 +288,10 @@ class HTTPClient extends HTTP_Request2
             }
         }
         $response = $this->send();
+        if (is_null($response)) {
+            // TRANS: Failed to retrieve a remote web resource, %s is the target URL.
+            throw new HTTP_Request2_Exception(sprintf(_m('HTTP request failed without response to URL: %s'), var_export($target, true)));
+        }
         return $response;
     }
     
index 3dc0ea65aa55fb3b89984fe89c17d3dbcac969eb..ecc76197cfe777b2ba42febf3a7b4ba07734c422 100644 (file)
@@ -96,11 +96,14 @@ class QueueMonitor
     protected function pingHttp($target, $data)
     {
         $client = new HTTPClient();
-        $result = $client->post($target, array(), $data);
+        try {
+            $result = $client->post($target, array(), $data);
         
-        if (!$result->isOk()) {
-            common_log(LOG_ERR, __METHOD__ . ' HTTP ' . $result->getStatus() .
-                                ': ' . $result->getBody());
+            if (!$result->isOk()) {
+                common_log(LOG_ERR, __METHOD__ . ' HTTP ' . $result->getStatus() . ': ' . $result->getBody());
+            }
+        } catch (HTTP_Request2_Exception $e) {
+                common_log(LOG_ERR, __METHOD__ . ' HTTP request generated PHP level error (check logs, could be DNS failure etc.). URL: '.var_export($target,true));
         }
     }
 
index 4df7690038f6741347b13766c06175a213ae54c6..2a1309d33f41e95649615feea0ab0fc50cfee738 100644 (file)
@@ -58,9 +58,14 @@ class DiscoveryHints {
     {
         $client = new HTTPClient();
         $client->setHeader('Accept', 'text/html,application/xhtml+xml');
-        $response = $client->get($url);
+        try {
+            $response = $client->get($url);
 
-        if (!$response->isOk()) {
+            if (!$response->isOk()) {
+                return null;
+            }
+        } catch (HTTP_Request2_Exception $e) {
+            // Any HTTPClient error that might've been thrown
             return null;
         }
 
index e3f5439aed69bd239da22149538dfbbade619819..ba4af4e6a1e734d0859ffbedea0642a0d9189074 100755 (executable)
@@ -75,10 +75,14 @@ if (have_option('--verify')) {
     print "Sending for verification to $url ...\n";
 
     $client = new HTTPClient();
-    $response = $client->post($url, array(), array('magic_env' => $envxml));
+    try {
+        $response = $client->post($url, array(), array('magic_env' => $envxml));
 
-    print $response->getStatus() . "\n\n";
-    print $response->getBody() . "\n\n";
+        print $response->getStatus() . "\n\n";
+        print $response->getBody() . "\n\n";
+    } catch (HTTP_Request2_Exception $e) {
+        print 'Failed POST to URL '.var_export($url, true).': '.$e->getMessage();
+    }
 }
 
 if (have_option('--slap')) {