[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