]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Handle timeout more gracefully in background pings
authorBrion Vibber <brion@pobox.com>
Wed, 5 May 2010 01:43:32 +0000 (18:43 -0700)
committerBrion Vibber <brion@pobox.com>
Wed, 5 May 2010 01:43:32 +0000 (18:43 -0700)
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.)

lib/default.php
lib/ping.php

index fa4ece10addbb1fdab09bc607c27b8c9b615efb5..ab5f294ded5946e9cc45cd21a62587da61b1add0 100644 (file)
@@ -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' =>
index 735af9ef134ecccb2ad55a089f10ba7c3dd37cce..be2933ae34016fb8dd17901e320ca86f6596c5be 100644 (file)
@@ -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,