<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2653.12">
<TITLE>RE: [JDEV] Heartbeat patch for dialup and laptop users and faulty presence info</TITLE>
</HEAD>
<BODY>
<P><FONT SIZE=2><sarcasm type='mild'></FONT>
<BR><FONT SIZE=2><stream:stream </FONT>
<BR><FONT SIZE=2> to='schumacher@jdev' </FONT>
<BR><FONT SIZE=2> xmlns='jabber:client' </FONT>
<BR><FONT SIZE=2> xmlns:stream='<A HREF="http://etherx.jabber.org/streams'" TARGET="_blank">http://etherx.jabber.org/streams'</A>></FONT>
<BR><FONT SIZE=2><iq id='A0' type='get'></FONT>
<BR><FONT SIZE=2> <query xmlns='jabber:iq:register'/></FONT>
<BR><FONT SIZE=2></iq></FONT>
<BR><FONT SIZE=2><iq id='A1' type='set'></FONT>
<BR><FONT SIZE=2> <query xmlns='jabber:iq:register'></FONT>
<BR><FONT SIZE=2> <username>felix</username></FONT>
<BR><FONT SIZE=2> <password>mypass</password></FONT>
<BR><FONT SIZE=2> <name>Felix Gallo</name></FONT>
<BR><FONT SIZE=2> <email>felix-reply@jdev</email></FONT>
<BR><FONT SIZE=2> </query></FONT>
<BR><FONT SIZE=2></iq></FONT>
<BR><FONT SIZE=2><iq id='A2' type='get'></FONT>
<BR><FONT SIZE=2> <query xmlns='jabber:iq:auth'></FONT>
<BR><FONT SIZE=2> <username>felix</username></FONT>
<BR><FONT SIZE=2> </query></FONT>
<BR><FONT SIZE=2></iq></FONT>
<BR><FONT SIZE=2><iq id='A3' type='set'></FONT>
<BR><FONT SIZE=2> <query xmlns='jabber:iq:auth'></FONT>
<BR><FONT SIZE=2> <username>felix</username></FONT>
<BR><FONT SIZE=2> <resource>reply-to-jdev</resource></FONT>
<BR><FONT SIZE=2> <password>mypass</password></FONT>
<BR><FONT SIZE=2> </query></FONT>
<BR><FONT SIZE=2></iq></FONT>
<BR><FONT SIZE=2><presence/></FONT>
<BR><FONT SIZE=2><message to='schumacher@jdev'></FONT>
<BR><FONT SIZE=2> <body>You're completely right -- a few bytes every few</FONT>
<BR><FONT SIZE=2>minutes would be intolerable for all those low bandwidth</FONT>
<BR><FONT SIZE=2>users. The finely tuned bandwidth efficient jabber protocol</FONT>
<BR><FONT SIZE=2>would be brought, yea, to its very knees!</body></FONT>
<BR><FONT SIZE=2></message></FONT>
<BR><FONT SIZE=2></stream></FONT>
<BR><FONT SIZE=2></sarcasm></FONT>
</P>
<P><FONT SIZE=2>I personally like the idea of guaranteed message delivery as an</FONT>
<BR><FONT SIZE=2>end around this problem, although it seems clear that ping/pong or</FONT>
<BR><FONT SIZE=2>Ben's register-a-timeout method would work out ok.</FONT>
</P>
<P><FONT SIZE=2>Another poster couldn't figure out how to get guaranteed message</FONT>
<BR><FONT SIZE=2>delivery to work, but it's actually pretty simple:</FONT>
</P>
<P><FONT SIZE=2>1. User sends guaranteed message, with checksum, retry count,</FONT>
<BR><FONT SIZE=2>and what-to-do-if-it-gets-stuck.</FONT>
<BR><FONT SIZE=2>2. Server receives message, verifies that it's OK.</FONT>
<BR><FONT SIZE=2>3. Server optionally passes it on to any intermediate servers,</FONT>
<BR><FONT SIZE=2>handshaking to make sure that the message is received before</FONT>
<BR><FONT SIZE=2>deleting it from local store.</FONT>
<BR><FONT SIZE=2>4. If the message is received successfully by the next server</FONT>
<BR><FONT SIZE=2>in the chain, the delivery responsibility passes to that next</FONT>
<BR><FONT SIZE=2>server, and the local server deletes it.</FONT>
<BR><FONT SIZE=2>5. If the message can't be passed to the intermediate server,</FONT>
<BR><FONT SIZE=2>the what-to-do-if-it-gets-stuck field is examined (possible</FONT>
<BR><FONT SIZE=2>values might include delete-with-notification, retry-for-a-certain-</FONT>
<BR><FONT SIZE=2>number-of-times, etc.)</FONT>
<BR><FONT SIZE=2>6. Upon receipt, you're done.</FONT>
</P>
<P><FONT SIZE=2>Note that this was guaranteed message delivery, rather than </FONT>
<BR><FONT SIZE=2>return-receipt. With return-receipt, you just have the recipient</FONT>
<BR><FONT SIZE=2>fire off a guaranteed message back declaring success. Just never</FONT>
<BR><FONT SIZE=2>have return receipts require return receipts.. ;)</FONT>
<BR><FONT SIZE=2> </FONT>
</P>
<P><FONT SIZE=2>> -----Original Message-----</FONT>
<BR><FONT SIZE=2>> From: Ben Schumacher [<A HREF="mailto:ben-jdev@blahr.com">mailto:ben-jdev@blahr.com</A>] </FONT>
<BR><FONT SIZE=2>> Sent: Wednesday, May 29, 2002 10:28 AM</FONT>
<BR><FONT SIZE=2>> To: jdev@jabber.org</FONT>
<BR><FONT SIZE=2>> Subject: Re: [JDEV] Heartbeat patch for dialup and laptop </FONT>
<BR><FONT SIZE=2>> users and faulty presence info</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> On Wed, 29 May 2002, Nathan Sharp wrote:</FONT>
<BR><FONT SIZE=2>> > While all this is good discussion, the fact remains that as jabber </FONT>
<BR><FONT SIZE=2>> > currently stands, it often reports users as online for hours after </FONT>
<BR><FONT SIZE=2>> > they are not online, and FAILS TO DELIVER packages or to </FONT>
<BR><FONT SIZE=2>> return an error when</FONT>
<BR><FONT SIZE=2>> > users are in this state. I would make the point that one </FONT>
<BR><FONT SIZE=2>> of the main</FONT>
<BR><FONT SIZE=2>> > reasons I switched from ICQ to Jabber was that ICQ started loosing </FONT>
<BR><FONT SIZE=2>> > messages now and then. When I discovered that Jabber did </FONT>
<BR><FONT SIZE=2>> the same, I </FONT>
<BR><FONT SIZE=2>> > was quite dissapointed, although w/ Jabber I stand a chance </FONT>
<BR><FONT SIZE=2>> of fixing </FONT>
<BR><FONT SIZE=2>> > it since it is open source.</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> [...snip...]</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> > The biggest argument I've heard so far is that ping/pongs </FONT>
<BR><FONT SIZE=2>> would take </FONT>
<BR><FONT SIZE=2>> > too much bandwidth. If your end users would prefer very </FONT>
<BR><FONT SIZE=2>> slightly less </FONT>
<BR><FONT SIZE=2>> > bandwidth used yet LOST MESSAGES AND FAULTY PRESENCE info, </FONT>
<BR><FONT SIZE=2>> well, you </FONT>
<BR><FONT SIZE=2>> > got different users than mine.</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> [...snip...]</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> It seems to me that you are trying to solve this issue in the </FONT>
<BR><FONT SIZE=2>> wrong way. If you want guaranteed message delivery, then the </FONT>
<BR><FONT SIZE=2>> protocol will have to be adjusted to have clients send </FONT>
<BR><FONT SIZE=2>> notification when a message is delivered (like </FONT>
<BR><FONT SIZE=2>> return-receipts in email, but hopefully more intelligent). In </FONT>
<BR><FONT SIZE=2>> fact, I would argue that guaranteed message delivery should </FONT>
<BR><FONT SIZE=2>> be the responsibility of the client rather than the server. </FONT>
<BR><FONT SIZE=2>> Modifiying the server to provide this functionality brings up </FONT>
<BR><FONT SIZE=2>> the question of "what is the appropriate behavior if a </FONT>
<BR><FONT SIZE=2>> message isn't deliver?" Should the server put the message in </FONT>
<BR><FONT SIZE=2>> offline storage? Bounce an error message? What happens if </FONT>
<BR><FONT SIZE=2>> offline storage isn't configured on the receiving party's server?</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> On the other hand, I do agree that faulty presence is an </FONT>
<BR><FONT SIZE=2>> issue. I hate messaging people and then realize that they </FONT>
<BR><FONT SIZE=2>> aren't actually online. My only goal is that we keep this </FONT>
<BR><FONT SIZE=2>> discussion focused. You will *NOT* solve lost message issues </FONT>
<BR><FONT SIZE=2>> with a ping/pong solution, however, you might be able to </FONT>
<BR><FONT SIZE=2>> provide better presence reliability.</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> That being said, I'm afraid that I'd have to side with Dave </FONT>
<BR><FONT SIZE=2>> Waite on this issue, I don't think ping/pong is a good </FONT>
<BR><FONT SIZE=2>> solution (or even your existing ping solution), especially </FONT>
<BR><FONT SIZE=2>> when you consider that wireless clients are likely to have </FONT>
<BR><FONT SIZE=2>> some of the most pronounced connectivity issues and highest </FONT>
<BR><FONT SIZE=2>> costs of bandwidth. A better solution should be proposed as a </FONT>
<BR><FONT SIZE=2>> protocol change, perhaps as a negotiated timeout period where </FONT>
<BR><FONT SIZE=2>> a client tells the server upon logging in that if it doesn't </FONT>
<BR><FONT SIZE=2>> send data within a given amount of time, then the server </FONT>
<BR><FONT SIZE=2>> should consider it unavailable.</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> My $0.02.</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> bs.</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> _______________________________________________</FONT>
<BR><FONT SIZE=2>> jdev mailing list</FONT>
<BR><FONT SIZE=2>> jdev@jabber.org</FONT>
<BR><FONT SIZE=2>> <A HREF="http://mailman.jabber.org/listinfo/jdev" TARGET="_blank">http://mailman.jabber.org/listinfo/jdev</A></FONT>
<BR><FONT SIZE=2>> </FONT>
</P>
<CODE><FONT SIZE=3><BR>
<BR>
**********************************************************************<BR>
E-mail sent through the Internet is not secure. Western Asset therefore<BR>
recommends that you do not send any confidential or sensitive information to<BR>
us via electronic mail, including social security numbers, account numbers,<BR>
or personal identification numbers. Delivery, and or timely delivery of<BR>
Internet mail is not guaranteed. Western Asset therefore recommends that<BR>
you do not send time sensitive or action-oriented messages to us via<BR>
electronic mail.<BR>
**********************************************************************<BR>
</FONT></CODE>
</BODY>
</HTML>