[JDEV] Heartbeat patch for dialup and laptop users and faulty presence info

Nathan Sharp spamnps+jabber at phoenix-int.com
Wed May 29 08:55:28 CDT 2002


While all this is good discussion, the fact remains that as jabber 
currently stands, it often reports users as online for hours after they 
are not online, and FAILS TO DELIVER packages or to return an error when 
users are in this state.   I would make the point that one of the main 
reasons I switched from ICQ to Jabber was that ICQ started loosing 
messages now and then.  When I discovered that Jabber did the same, I 
was quite dissapointed, although w/ Jabber I stand a chance of fixing it 
since it is open source.

Please take note, what I'm suggesting is a configurable option, not a 
required protocol change.  In fact, in the patch I submitted the 
heartbeat option is turned off by default (a mistake in my mind, but I 
wanted to be polite).  

The biggest argument I've heard so far is that ping/pongs would take too 
much bandwidth.  If your end users would prefer very slightly less 
bandwidth used yet LOST MESSAGES AND FAULTY PRESENCE info, well, you got 
different users than mine.

So unless some new solution comes up (my ears are open!), I'm going to 
continue down the ping/pong solution.  If anyone wants to help design 
this such that minimum bandwidth is consumed, I'd be happy to entertain 
further discussion along those lines.

Lastly, to reiterate why TCP timeouts and keepalives don't solve the 
problem:

   - Timeouts only work if packets have been sent.  Jabber can currently 
go long periods of time w/o needing to send a packet to a client.

   - Keepalives can't do a good job on all platforms.  Read section 
4.2.3.6 of RFC 1122.  These have to be configured at the system level, 
if they can be configured at all!

   - Fact is that instant messaging IS a special case and has different 
requirements for keepalive than most any other protocol.  No, I don't 
want sendmail or POP3 wasting bandwidth with keepalive type packets. 
 YES I do want Jabber to do so and YES it should be an application 
specific solution.

My apologies for the capitalizations.  Sometimes I get out of control ;-)

 Nathan






More information about the JDev mailing list