summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/stompqueuemanager.php7
-rw-r--r--lib/xmppqueuehandler.php9
2 files changed, 13 insertions, 3 deletions
diff --git a/lib/stompqueuemanager.php b/lib/stompqueuemanager.php
index 4cefba113..4d89806f8 100644
--- a/lib/stompqueuemanager.php
+++ b/lib/stompqueuemanager.php
@@ -117,9 +117,12 @@ class StompQueueManager
}
unset($frame);
- }
- $handler->idle(0);
+ $handler->idle(QUEUE_HANDLER_HIT_IDLE);
+
+ } else {
+ $handler->idle(QUEUE_HANDLER_MISS_IDLE);
+ }
}
$this->con->unsubscribe($this->_queueName($queue));
diff --git a/lib/xmppqueuehandler.php b/lib/xmppqueuehandler.php
index 9b1a6989e..cbcfe5e1c 100644
--- a/lib/xmppqueuehandler.php
+++ b/lib/xmppqueuehandler.php
@@ -21,6 +21,8 @@ if (!defined('LACONICA')) { exit(1); }
require_once(INSTALLDIR.'/lib/queuehandler.php');
+define('PING_INTERVAL', 120);
+
/**
* Common superclass for all XMPP-using queue handlers. They all need to
* service their message queues on idle, and forward any incoming messages
@@ -31,6 +33,7 @@ require_once(INSTALLDIR.'/lib/queuehandler.php');
class XmppQueueHandler extends QueueHandler
{
var $pingid = 0;
+ var $lastping = null;
function start()
{
@@ -64,7 +67,11 @@ class XmppQueueHandler extends QueueHandler
if ($this->conn) {
$this->log(LOG_DEBUG, "Servicing the XMPP queue.");
$this->conn->processTime($timeout);
- $this->sendPing();
+ $now = time();
+ if (empty($this->lastping) || $now - $this->lastping > PING_INTERVAL) {
+ $this->sendPing();
+ $this->lastping = $now;
+ }
}
} catch (XMPPHP_Exception $e) {
$this->log(LOG_ERR, "Got an XMPPHP_Exception: " . $e->getMessage());