From: Brion Vibber Date: Wed, 5 May 2010 01:43:32 +0000 (-0700) Subject: Handle timeout more gracefully in background pings X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=bb94b78e8997ba1b66ddde7ad46653bfa6f958e6;p=quix0rs-gnu-social.git Handle timeout more gracefully in background pings Added a 2-second default timeout for XMLRPC/extended pings, configurable as [ping,timeout]. No longer repeating the entire ping section if we had an HTTP error during a submission. For now, dropping the bad item and continuing on with others. (Todo: individual retry and cleaner discards of blacklisted broken-for-now sites.) --- diff --git a/lib/default.php b/lib/default.php index fa4ece10ad..ab5f294ded 100644 --- a/lib/default.php +++ b/lib/default.php @@ -188,7 +188,8 @@ $default = 'cache' => array('base' => null), 'ping' => - array('notify' => array()), + array('notify' => array(), + 'timeout' => 2), 'inboxes' => array('enabled' => true), # ignored after 0.9.x 'newuser' => diff --git a/lib/ping.php b/lib/ping.php index 735af9ef13..be2933ae34 100644 --- a/lib/ping.php +++ b/lib/ping.php @@ -45,7 +45,15 @@ function ping_broadcast_notice($notice) { $tags)); $request = HTTPClient::start(); - $httpResponse = $request->post($notify_url, array('Content-Type: text/xml'), $req); + $request->setConfig('connect_timeout', common_config('ping', 'timeout')); + $request->setConfig('timeout', common_config('ping', 'timeout')); + try { + $httpResponse = $request->post($notify_url, array('Content-Type: text/xml'), $req); + } catch (Exception $e) { + common_log(LOG_ERR, + "Exception pinging $notify_url: " . $e->getMessage()); + continue; + } if (!$httpResponse || mb_strlen($httpResponse->getBody()) == 0) { common_log(LOG_WARNING,