From 3ed632decf78ecdb8058f584d5e501b030ca894a Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Wed, 13 Jan 2016 14:08:48 +0100 Subject: [PATCH] NoHttpResponseException needed instead of HTTP_Request2_Exception HTTP_Request2_Exception assumed an HTTP response status code/line --- lib/httpclient.php | 2 +- lib/nohttpresponseexception.php | 43 ++++++++++++++++++++++++++ lib/queuemonitor.php | 4 +-- plugins/OStatus/lib/discoveryhints.php | 2 +- plugins/OStatus/tests/slap.php | 2 +- 5 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 lib/nohttpresponseexception.php diff --git a/lib/httpclient.php b/lib/httpclient.php index 98e5d0426b..5fe0e9f329 100644 --- a/lib/httpclient.php +++ b/lib/httpclient.php @@ -290,7 +290,7 @@ 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))); + throw new NoHttpResponseException($url); } return $response; } diff --git a/lib/nohttpresponseexception.php b/lib/nohttpresponseexception.php new file mode 100644 index 0000000000..1555fb96fc --- /dev/null +++ b/lib/nohttpresponseexception.php @@ -0,0 +1,43 @@ +. + * + * @category Exception + * @package GNUsocial + * @author Mikael Nordfeldth + * @copyright 2013 Free Software Foundation, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 + * @link http://www.gnu.org/software/social/ + */ + +if (!defined('GNUSOCIAL')) { exit(1); } + +// Can't extend HTTP_Request2_Exception since it requires an HTTP status code which we didn't get +class NoHttpResponseException extends Exception +{ + public $url; // target URL + + public function __construct($url) + { + $this->url = $url; + // We could log an entry here with the search parameters + parent::__construct(sprintf(_('No HTTP response from URL %s.'), _ve($url))); + } +} diff --git a/lib/queuemonitor.php b/lib/queuemonitor.php index ecc76197cf..cb68dee930 100644 --- a/lib/queuemonitor.php +++ b/lib/queuemonitor.php @@ -102,8 +102,8 @@ class QueueMonitor 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)); + } catch (NoHttpResponseException $e) { + common_log(LOG_ERR, __METHOD__ . ':'.$e->getMessage()); } } diff --git a/plugins/OStatus/lib/discoveryhints.php b/plugins/OStatus/lib/discoveryhints.php index d95bd8e78f..5bd9fcbe48 100644 --- a/plugins/OStatus/lib/discoveryhints.php +++ b/plugins/OStatus/lib/discoveryhints.php @@ -64,7 +64,7 @@ class DiscoveryHints { if (!$response->isOk()) { return null; } - } catch (HTTP_Request2_Exception $e) { + } catch (NoHttpResponseException $e) { // Any HTTPClient error that might've been thrown return null; } diff --git a/plugins/OStatus/tests/slap.php b/plugins/OStatus/tests/slap.php index ba4af4e6a1..84447bfd15 100755 --- a/plugins/OStatus/tests/slap.php +++ b/plugins/OStatus/tests/slap.php @@ -80,7 +80,7 @@ if (have_option('--verify')) { print $response->getStatus() . "\n\n"; print $response->getBody() . "\n\n"; - } catch (HTTP_Request2_Exception $e) { + } catch (NoHttpResponseException $e) { print 'Failed POST to URL '.var_export($url, true).': '.$e->getMessage(); } }