forked from GNUsocial/gnu-social
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.)
This commit is contained in:
parent
5f5d9518bd
commit
bb94b78e89
@ -188,7 +188,8 @@ $default =
|
|||||||
'cache' =>
|
'cache' =>
|
||||||
array('base' => null),
|
array('base' => null),
|
||||||
'ping' =>
|
'ping' =>
|
||||||
array('notify' => array()),
|
array('notify' => array(),
|
||||||
|
'timeout' => 2),
|
||||||
'inboxes' =>
|
'inboxes' =>
|
||||||
array('enabled' => true), # ignored after 0.9.x
|
array('enabled' => true), # ignored after 0.9.x
|
||||||
'newuser' =>
|
'newuser' =>
|
||||||
|
10
lib/ping.php
10
lib/ping.php
@ -45,7 +45,15 @@ function ping_broadcast_notice($notice) {
|
|||||||
$tags));
|
$tags));
|
||||||
|
|
||||||
$request = HTTPClient::start();
|
$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) {
|
if (!$httpResponse || mb_strlen($httpResponse->getBody()) == 0) {
|
||||||
common_log(LOG_WARNING,
|
common_log(LOG_WARNING,
|
||||||
|
Loading…
Reference in New Issue
Block a user