[Pidgin] #10767: openfire disconnects pidgin after 6 minutes on busy system
Pidgin
trac at pidgin.im
Wed Nov 18 15:51:13 EST 2009
#10767: openfire disconnects pidgin after 6 minutes on busy system
------------------+---------------------------------------------------------
Reporter: rjoly | Type: defect
Status: new | Component: libpurple
Version: 2.6.3 | Keywords: XMPP openfire ping timeout disconnected
------------------+---------------------------------------------------------
I am running openfire 3.6.4 with a bunch of pidgin 2.6.3 clients using
XMPP accounts (mix of Windows and Linux). It was observed that the pidgin
clients often got disconnected by the openfire server when there is a lot
of user activity on the openfire server. I started googling for my
problem and found numerous mentions of openfire not responding to pings
but after careful inspection of openfire, pidgin and tcpdump traces I
concluded that this was not the case here - every ping sent out by pidgin
were being responded to and responses reached the pidgin client. In fact
the problem was somewhere else completely. Here are my findings:
First, some background on openfire. In an effort to detect clients that
suddenly go away without properly terminating their stream, openfire
implements a policy whereby it will consider a client that it hasn't heard
from for a period of 6 minutes as being disconnected. My guess is that
such a policy is in place to speed up the detection of disconnected
clients as TCP connection time-outs can be quite long.
This behavior is incompatible with Pidgin's keep-alive policy which states
that "[pidgin] Only send keep-alives if we haven't heard from the server
in a while.". Imagine a pidgin client with many buddies with some that are
changing XMPP presence state often. Such a pidgin client will be
subjected to a semi-steady flow of incoming presence updates from the
server. These presence updates, if frequent enough, will effectively
shut off the 'ping' mechanism therefore causing the openfire server to
stop receiving messages from the client. If that "ping hiatus" persists
for 6 minutes or more, the 'idle session' timer that openfire maintains
will fire resulting in the client getting disconnected.
Although a nice bandwidth optimization, it is my personal opinion that the
suppression of pings due to inbound traffic from the server should be
removed to eliminate cases such as the one I just described.
--
Ticket URL: <http://developer.pidgin.im/ticket/10767>
Pidgin <http://pidgin.im>
Pidgin
More information about the Tracker
mailing list