]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/ping.php
Forgot to commit the JS for ModPlus. :)
[quix0rs-gnu-social.git] / lib / ping.php
index 735af9ef134ecccb2ad55a089f10ba7c3dd37cce..abf1c4048edddb5a6c3f1bcbd783d75d9b4c9abe 100644 (file)
@@ -27,7 +27,14 @@ function ping_broadcast_notice($notice) {
 
        # Array of servers, URL => type
        $notify = common_config('ping', 'notify');
-       $profile = $notice->getProfile();
+    try {
+        $profile = $notice->getProfile();
+    } catch (Exception $e) {
+        // @todo: distinguish the 'broken notice/profile' case from more general
+        //        transitory errors.
+        common_log(LOG_ERR, "Exception getting notice profile: " . $e->getMessage());
+        return true;
+    }
        $tags = ping_notice_tags($notice);
 
        foreach ($notify as $notify_url => $type) {
@@ -45,7 +52,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,