<!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>&lt;sarcasm type='mild'&gt;</FONT>
<BR><FONT SIZE=2>&lt;stream:stream </FONT>
<BR><FONT SIZE=2>&nbsp; to='schumacher@jdev' </FONT>
<BR><FONT SIZE=2>&nbsp; xmlns='jabber:client' </FONT>
<BR><FONT SIZE=2>&nbsp; xmlns:stream='<A HREF="http://etherx.jabber.org/streams'" TARGET="_blank">http://etherx.jabber.org/streams'</A>&gt;</FONT>
<BR><FONT SIZE=2>&lt;iq id='A0' type='get'&gt;</FONT>
<BR><FONT SIZE=2>&nbsp; &lt;query xmlns='jabber:iq:register'/&gt;</FONT>
<BR><FONT SIZE=2>&lt;/iq&gt;</FONT>
<BR><FONT SIZE=2>&lt;iq id='A1' type='set'&gt;</FONT>
<BR><FONT SIZE=2>&nbsp; &lt;query xmlns='jabber:iq:register'&gt;</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; &lt;username&gt;felix&lt;/username&gt;</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; &lt;password&gt;mypass&lt;/password&gt;</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; &lt;name&gt;Felix Gallo&lt;/name&gt;</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; &lt;email&gt;felix-reply@jdev&lt;/email&gt;</FONT>
<BR><FONT SIZE=2>&nbsp; &lt;/query&gt;</FONT>
<BR><FONT SIZE=2>&lt;/iq&gt;</FONT>
<BR><FONT SIZE=2>&lt;iq id='A2' type='get'&gt;</FONT>
<BR><FONT SIZE=2>&nbsp; &lt;query xmlns='jabber:iq:auth'&gt;</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; &lt;username&gt;felix&lt;/username&gt;</FONT>
<BR><FONT SIZE=2>&nbsp; &lt;/query&gt;</FONT>
<BR><FONT SIZE=2>&lt;/iq&gt;</FONT>
<BR><FONT SIZE=2>&lt;iq id='A3' type='set'&gt;</FONT>
<BR><FONT SIZE=2>&nbsp; &lt;query xmlns='jabber:iq:auth'&gt;</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; &lt;username&gt;felix&lt;/username&gt;</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; &lt;resource&gt;reply-to-jdev&lt;/resource&gt;</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; &lt;password&gt;mypass&lt;/password&gt;</FONT>
<BR><FONT SIZE=2>&nbsp; &lt;/query&gt;</FONT>
<BR><FONT SIZE=2>&lt;/iq&gt;</FONT>
<BR><FONT SIZE=2>&lt;presence/&gt;</FONT>
<BR><FONT SIZE=2>&lt;message to='schumacher@jdev'&gt;</FONT>
<BR><FONT SIZE=2>&nbsp; &lt;body&gt;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.&nbsp; The finely tuned bandwidth efficient jabber protocol</FONT>
<BR><FONT SIZE=2>would be brought, yea, to its very knees!&lt;/body&gt;</FONT>
<BR><FONT SIZE=2>&lt;/message&gt;</FONT>
<BR><FONT SIZE=2>&lt;/stream&gt;</FONT>
<BR><FONT SIZE=2>&lt;/sarcasm&gt;</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.&nbsp; 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.&nbsp; Server receives message, verifies that it's OK.</FONT>
<BR><FONT SIZE=2>3.&nbsp; 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.&nbsp; 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.&nbsp; 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.&nbsp; 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.&nbsp; With return-receipt, you just have the recipient</FONT>
<BR><FONT SIZE=2>fire off a guaranteed message back declaring success.&nbsp; Just never</FONT>
<BR><FONT SIZE=2>have return receipts require return receipts.. ;)</FONT>
<BR><FONT SIZE=2>&nbsp;</FONT>
</P>

<P><FONT SIZE=2>&gt; -----Original Message-----</FONT>
<BR><FONT SIZE=2>&gt; From: Ben Schumacher [<A HREF="mailto:ben-jdev@blahr.com">mailto:ben-jdev@blahr.com</A>] </FONT>
<BR><FONT SIZE=2>&gt; Sent: Wednesday, May 29, 2002 10:28 AM</FONT>
<BR><FONT SIZE=2>&gt; To: jdev@jabber.org</FONT>
<BR><FONT SIZE=2>&gt; Subject: Re: [JDEV] Heartbeat patch for dialup and laptop </FONT>
<BR><FONT SIZE=2>&gt; users and faulty presence info</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; On Wed, 29 May 2002, Nathan Sharp wrote:</FONT>
<BR><FONT SIZE=2>&gt; &gt; While all this is good discussion, the fact remains that as jabber </FONT>
<BR><FONT SIZE=2>&gt; &gt; currently stands, it often reports users as online for hours after </FONT>
<BR><FONT SIZE=2>&gt; &gt; they are not online, and FAILS TO DELIVER packages or to </FONT>
<BR><FONT SIZE=2>&gt; return an error when</FONT>
<BR><FONT SIZE=2>&gt; &gt; users are in this state.&nbsp;&nbsp; I would make the point that one </FONT>
<BR><FONT SIZE=2>&gt; of the main</FONT>
<BR><FONT SIZE=2>&gt; &gt; reasons I switched from ICQ to Jabber was that ICQ started loosing </FONT>
<BR><FONT SIZE=2>&gt; &gt; messages now and then.&nbsp; When I discovered that Jabber did </FONT>
<BR><FONT SIZE=2>&gt; the same, I </FONT>
<BR><FONT SIZE=2>&gt; &gt; was quite dissapointed, although w/ Jabber I stand a chance </FONT>
<BR><FONT SIZE=2>&gt; of fixing </FONT>
<BR><FONT SIZE=2>&gt; &gt; it since it is open source.</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp; [...snip...]</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; &gt; The biggest argument I've heard so far is that ping/pongs </FONT>
<BR><FONT SIZE=2>&gt; would take </FONT>
<BR><FONT SIZE=2>&gt; &gt; too much bandwidth.&nbsp; If your end users would prefer very </FONT>
<BR><FONT SIZE=2>&gt; slightly less </FONT>
<BR><FONT SIZE=2>&gt; &gt; bandwidth used yet LOST MESSAGES AND FAULTY PRESENCE info, </FONT>
<BR><FONT SIZE=2>&gt; well, you </FONT>
<BR><FONT SIZE=2>&gt; &gt; got different users than mine.</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp; [...snip...]</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; It seems to me that you are trying to solve this issue in the </FONT>
<BR><FONT SIZE=2>&gt; wrong way. If you want guaranteed message delivery, then the </FONT>
<BR><FONT SIZE=2>&gt; protocol will have to be adjusted to have clients send </FONT>
<BR><FONT SIZE=2>&gt; notification when a message is delivered (like </FONT>
<BR><FONT SIZE=2>&gt; return-receipts in email, but hopefully more intelligent). In </FONT>
<BR><FONT SIZE=2>&gt; fact, I would argue that guaranteed message delivery should </FONT>
<BR><FONT SIZE=2>&gt; be the responsibility of the client rather than the server. </FONT>
<BR><FONT SIZE=2>&gt; Modifiying the server to provide this functionality brings up </FONT>
<BR><FONT SIZE=2>&gt; the question of &quot;what is the appropriate behavior if a </FONT>
<BR><FONT SIZE=2>&gt; message isn't deliver?&quot; Should the server put the message in </FONT>
<BR><FONT SIZE=2>&gt; offline storage? Bounce an error message? What happens if </FONT>
<BR><FONT SIZE=2>&gt; offline storage isn't configured on the receiving party's server?</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; On the other hand, I do agree that faulty presence is an </FONT>
<BR><FONT SIZE=2>&gt; issue. I hate messaging people and then realize that they </FONT>
<BR><FONT SIZE=2>&gt; aren't actually online. My only goal is that we keep this </FONT>
<BR><FONT SIZE=2>&gt; discussion focused. You will *NOT* solve lost message issues </FONT>
<BR><FONT SIZE=2>&gt; with a ping/pong solution, however, you might be able to </FONT>
<BR><FONT SIZE=2>&gt; provide better presence reliability.</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; That being said, I'm afraid that I'd have to side with Dave </FONT>
<BR><FONT SIZE=2>&gt; Waite on this issue, I don't think ping/pong is a good </FONT>
<BR><FONT SIZE=2>&gt; solution (or even your existing ping solution), especially </FONT>
<BR><FONT SIZE=2>&gt; when you consider that wireless clients are likely to have </FONT>
<BR><FONT SIZE=2>&gt; some of the most pronounced connectivity issues and highest </FONT>
<BR><FONT SIZE=2>&gt; costs of bandwidth. A better solution should be proposed as a </FONT>
<BR><FONT SIZE=2>&gt; protocol change, perhaps as a negotiated timeout period where </FONT>
<BR><FONT SIZE=2>&gt; a client tells the server upon logging in that if it doesn't </FONT>
<BR><FONT SIZE=2>&gt; send data within a given amount of time, then the server </FONT>
<BR><FONT SIZE=2>&gt; should consider it unavailable.</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; My $0.02.</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; bs.</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; _______________________________________________</FONT>
<BR><FONT SIZE=2>&gt; jdev mailing list</FONT>
<BR><FONT SIZE=2>&gt; jdev@jabber.org</FONT>
<BR><FONT SIZE=2>&gt; <A HREF="http://mailman.jabber.org/listinfo/jdev" TARGET="_blank">http://mailman.jabber.org/listinfo/jdev</A></FONT>
<BR><FONT SIZE=2>&gt; </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>