DBQueueManager for JabberQueueHandler can hang on some cases. I'm quite sure
that the line 58 (
http://gitorious.org/laconica/mainline/blobs/master/lib/dbqueuemanager.php)
causes the problem. The line is:

$notice = $this->_nextItem($queue, null);

Now if there are no notices in the jabber queue, the loop in the _nextItem
function will not end. Because of that JabberQueueHandler will not check if
there are messages in XMPP connection buffer, i.e. no $handler->idle(). In
this case if notices posted from XMPP clients end up to JabberQueueHandler*,
they are not forwarded to XMPPDaemon daemon until the loop in _nextItem
function ends.

Is this on purpose done like this? Bigger sites which have lot of people
posting notices, this shouldn't be a problem but on smaller sites having
XMPP heavy users this could be problem.

I can think of at least two ways to fix this:
1. replace the null with some timeout
2. change _netItem function to service XMPP buffer

-- 
Jaakko
Sent from Helsinki, ES, Finland

*) It's a different but good question why many of my notices end up into
JabberQueueHandler.
_______________________________________________
Laconica-dev mailing list
[email protected]
http://mail.laconi.ca/mailman/listinfo/laconica-dev

Reply via email to