X-Git-Url: https://git.mxchange.org/?p=quix0rs-gnu-social.git;a=blobdiff_plain;f=plugins%2FOStatus%2Flib%2Fhuboutqueuehandler.php;h=46d9e08e3924922b4b9da6499f24d79c529e47d2;hp=cb44ad2c4edc55d298b2ae09060740d42eed5e52;hb=c18020561b8a01bbb2b3fc092694a7bb0fde70f9;hpb=4e6f587f868d71f08c618d0dedf6ddf0331619c2 diff --git a/plugins/OStatus/lib/huboutqueuehandler.php b/plugins/OStatus/lib/huboutqueuehandler.php index cb44ad2c4e..46d9e08e39 100644 --- a/plugins/OStatus/lib/huboutqueuehandler.php +++ b/plugins/OStatus/lib/huboutqueuehandler.php @@ -17,6 +17,10 @@ * along with this program. If not, see . */ +if (!defined('STATUSNET')) { + exit(1); +} + /** * Send a raw PuSH atom update from our internal hub. * @package Hub @@ -33,20 +37,29 @@ class HubOutQueueHandler extends QueueHandler { $sub = $data['sub']; $atom = $data['atom']; + $retries = $data['retries']; + assert(is_object($sub)); assert($sub instanceof HubSub); assert(is_string($atom)); try { $sub->push($atom); } catch (Exception $e) { - common_log(LOG_ERR, "Failed PuSH to $sub->callback for $sub->topic: " . - $e->getMessage()); - // @fixme Reschedule a later delivery? - // Currently we have no way to do this other than 'send NOW' + $retries--; + $msg = "Failed PuSH to $sub->callback for $sub->topic: " . + $e->getMessage(); + if ($retries > 0) { + common_log(LOG_INFO, "$msg; scheduling for $retries more tries"); + + // @fixme when we have infrastructure to schedule a retry + // after a delay, use it. + $sub->distribute($atom, $retries); + } else { + common_log(LOG_ERR, "$msg; discarding"); + } } return true; } } -