summaryrefslogtreecommitdiff
path: root/lib/xmppqueuehandler.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/xmppqueuehandler.php')
-rw-r--r--lib/xmppqueuehandler.php16
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/xmppqueuehandler.php b/lib/xmppqueuehandler.php
index 7d14422c6..77d476c30 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()
{
@@ -63,8 +66,12 @@ class XmppQueueHandler extends QueueHandler
try {
if ($this->conn) {
$this->log(LOG_DEBUG, "Servicing the XMPP queue.");
- $this->conn->processTime(max($timeout, 1));
- $this->sendPing();
+ $this->conn->processTime($timeout);
+ $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());
@@ -119,4 +126,9 @@ class XmppQueueHandler extends QueueHandler
return jabber_daemon_address() . '/' . common_config('xmpp','resource') . 'daemon';
}
}
+
+ function getSockets()
+ {
+ return array($this->conn->getSocket());
+ }
}