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' =>
|
||||
array('base' => null),
|
||||
'ping' =>
|
||||
array('notify' => array()),
|
||||
array('notify' => array(),
|
||||
'timeout' => 2),
|
||||
'inboxes' =>
|
||||
array('enabled' => true), # ignored after 0.9.x
|
||||
'newuser' =>
|
||||
|
10
lib/ping.php
10
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,
|
||||
|
Loading…
Reference in New Issue
Block a user