From a5212dd6e32433bac4c5085e8ffb3c8c27a01936 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 9 Jul 2009 10:11:13 -0400 Subject: [PATCH] timeouts and pings for xmppqueuehandlers --- lib/xmppqueuehandler.php | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lib/xmppqueuehandler.php b/lib/xmppqueuehandler.php index c8b5ad1fb4..9b1a6989e2 100644 --- a/lib/xmppqueuehandler.php +++ b/lib/xmppqueuehandler.php @@ -30,6 +30,8 @@ require_once(INSTALLDIR.'/lib/queuehandler.php'); class XmppQueueHandler extends QueueHandler { + var $pingid = 0; + function start() { # Low priority; we don't want to receive messages @@ -44,6 +46,11 @@ class XmppQueueHandler extends QueueHandler return !is_null($this->conn); } + function timeout() + { + return 10; + } + function handle_reconnect(&$pl) { $this->conn->processUntil('session_start'); @@ -55,7 +62,9 @@ class XmppQueueHandler extends QueueHandler # Process the queue for as long as needed try { if ($this->conn) { + $this->log(LOG_DEBUG, "Servicing the XMPP queue."); $this->conn->processTime($timeout); + $this->sendPing(); } } catch (XMPPHP_Exception $e) { $this->log(LOG_ERR, "Got an XMPPHP_Exception: " . $e->getMessage()); @@ -63,6 +72,22 @@ class XmppQueueHandler extends QueueHandler } } + function sendPing() + { + $jid = jabber_daemon_address().'/'.$this->_id.$this->transport(); + $server = common_config('xmpp', 'server'); + + if (!isset($this->pingid)) { + $this->pingid = 0; + } else { + $this->pingid++; + } + + $this->log(LOG_DEBUG, "Sending ping #{$this->pingid}"); + + $this->conn->send(""); + } + function forward_message(&$pl) { if ($pl['type'] != 'chat') {