diff options
author | Brion Vibber <brion@pobox.com> | 2010-05-04 18:43:32 -0700 |
---|---|---|
committer | Brion Vibber <brion@pobox.com> | 2010-05-04 18:43:32 -0700 |
commit | bb94b78e8997ba1b66ddde7ad46653bfa6f958e6 (patch) | |
tree | 0a5084f85db301a3bd8f3f570400af731f2fe99e | |
parent | 5f5d9518bdc5daec5a9250a852777d3015856c78 (diff) |
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.)
-rw-r--r-- | lib/default.php | 3 | ||||
-rw-r--r-- | lib/ping.php | 10 |
2 files changed, 11 insertions, 2 deletions
diff --git a/lib/default.php b/lib/default.php index fa4ece10a..ab5f294de 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 735af9ef1..be2933ae3 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, |