aboutsummaryrefslogtreecommitdiffstats
path: root/include/zot.php
diff options
context:
space:
mode:
authorMario Vavti <mario@mariovavti.com>2019-01-14 10:14:44 +0100
committerMario Vavti <mario@mariovavti.com>2019-01-14 10:14:44 +0100
commit65f2d7fd66103923733a93e7c476939d02b5ce28 (patch)
tree289710273a8beb363fce758d7b02052c64718a83 /include/zot.php
parentf3554804bfe5bf88984bce925470934429567516 (diff)
parente78fd09e07f8c8be082c7c968969ef2c9a685511 (diff)
downloadvolse-hubzilla-65f2d7fd66103923733a93e7c476939d02b5ce28.tar.gz
volse-hubzilla-65f2d7fd66103923733a93e7c476939d02b5ce28.tar.bz2
volse-hubzilla-65f2d7fd66103923733a93e7c476939d02b5ce28.zip
Merge branch 'dev' into core_fixes
Diffstat (limited to 'include/zot.php')
-rw-r--r--include/zot.php20
1 files changed, 18 insertions, 2 deletions
diff --git a/include/zot.php b/include/zot.php
index 9934dae07..df54f2b27 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -4924,12 +4924,13 @@ function zot_reply_pickup($data) {
/*
* Everything is good if we made it here, so find all messages that are going to this location
- * and send them all.
+ * and send them all - or a reasonable number if there are a lot so we don't overflow memory.
*/
- $r = q("select * from outq where outq_posturl = '%s'",
+ $r = q("select * from outq where outq_posturl = '%s' limit 100",
dbesc($data['callback'])
);
+
if($r) {
logger('mod_zot: successful pickup message received from ' . $data['callback'] . ' ' . count($r) . ' message(s) picked up', LOGGER_DEBUG);
@@ -4955,6 +4956,19 @@ function zot_reply_pickup($data) {
}
}
+ // It's possible that we have more than 100 messages waiting to be sent.
+
+ // See if there are any more messages in the queue.
+ $x = q("select * from outq where outq_posturl = '%s' order by outq_created limit 1",
+ dbesc($data['callback'])
+ );
+
+ // If so, kick off a new delivery notification for the next batch
+ if ($x) {
+ logger("Send additional pickup request.", LOGGER_DEBUG);
+ queue_deliver($x[0],true);
+ }
+
// this is a bit of a hack because we don't have the hubloc_url here, only the callback url.
// worst case is we'll end up using aes256cbc if they've got a different post endpoint
@@ -4966,6 +4980,8 @@ function zot_reply_pickup($data) {
$encrypted = crypto_encapsulate(json_encode($ret),$sitekey,$algorithm);
json_return_and_die($encrypted);
+ // @FIXME: There is a possibility that the transmission will get interrupted
+ // and fail - in which case this packet of messages will be lost.
/* pickup: end */
}