aboutsummaryrefslogtreecommitdiffstats
path: root/include/queue_fn.php
diff options
context:
space:
mode:
Diffstat (limited to 'include/queue_fn.php')
-rw-r--r--include/queue_fn.php28
1 files changed, 27 insertions, 1 deletions
diff --git a/include/queue_fn.php b/include/queue_fn.php
index 1e53d7488..676620e2f 100644
--- a/include/queue_fn.php
+++ b/include/queue_fn.php
@@ -88,6 +88,7 @@ function queue_deliver($outq, $immediate = false) {
}
}
else {
+
// zot sites should all have a site record, unless they've been dead for as long as
// your site has existed. Since we don't know for sure what these sites are,
// call them unknown
@@ -100,6 +101,11 @@ function queue_deliver($outq, $immediate = false) {
}
}
+ $arr = array('outq' => $outq, 'base' => $base, 'handled' => false, 'immediate' => $immediate);
+ call_hooks('queue_deliver',$arr);
+ if($arr['handled'])
+ return;
+
// "post" queue driver - used for diaspora and friendica-over-diaspora communications.
if($outq['outq_driver'] === 'post') {
@@ -118,11 +124,31 @@ function queue_deliver($outq, $immediate = false) {
dbesc($outq['outq_hash'])
);
remove_queue_item($outq['outq_hash']);
+
+ // server is responding - see if anything else is going to this destination and is piled up
+ // and try to send some more. We're relying on the fact that do_delivery() results in an
+ // immediate delivery otherwise we could get into a queue loop.
+
+ if(! $immediate) {
+ $x = q("select outq_hash from outq where outq_posturl = '%s' and outq_delivered = 0",
+ dbesc($outq['outq_posturl'])
+ );
+
+ $piled_up = array();
+ if($x) {
+ foreach($x as $xx) {
+ $piled_up[] = $xx['outq_hash'];
+ }
+ }
+ if($piled_up) {
+ do_delivery($piled_up);
+ }
+ }
}
else {
logger('deliver: queue post returned ' . $result['return_code']
. ' from ' . $outq['outq_posturl'],LOGGER_DEBUG);
- update_queue_item($argv[$x]);
+ update_queue_item($outq['outq_posturl']);
}
return;
}