<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Dan DeMaggio">
<meta name="GENERATOR" content="Mozilla/4.5 [en] (WinNT; I) [Netscape]">
<title>Jabber Jabber</title>
</head>
<body>
Here's some conversations using snapshot 915778725 grabbed
on 1/8/99.
<p>List of characters:
<table BORDER >
<tr>
<td>T</td>
<td>jabber.transport</td>
</tr>
<tr>
<td>JB </td>
<td>jabberbox</td>
</tr>
<tr>
<td>C</td>
<td>client</td>
</tr>
</table>
<p>Scene 1: Transport startup
<br>
<table BORDER WIDTH="100%" >
<tr VALIGN=TOP>
<td>T-JB</td>
<td><r handshake='jabber'>
<br></r></td>
<td>T connects to JB and announces itself (should JB announce itself first?)
as a jabber transport.</td>
</tr>
<tr VALIGN=TOP>
<td>JB-T</td>
<td><j type='config'>
<br> <name>localhost</name>
<br> <alias>JABBER</alias>
<br> <alias>localhost</alias>
<br> <!>
<br> <listen>198.45.23.4</listen>
<br> </!>
<br> <modules>
<br> <basic>
<br>
<cache>/var/tmp/jabber.basic.cache</cache>
<br>
<user>username@password</user>
<br>
<user>test@test</user>
<br>
<user>someone@asdf</user>
<br> </basic>
<br> <mysql>
<br>
<host>localhost</host>
<br>
<db>jabbers</db>
<br>
<user>jab</user>
<br>
<pass>P0wCheez</pass>
<br> </mysql>
<br> </modules>
<br></j></td>
<td>JB sends config packet that was originally in <jabber> tags. [ perl
announces itself as 'perl' and gets the stuff in <perl> tags. ]</td>
</tr>
<tr VALIGN=TOP>
<td>T-JB</td>
<td><r handshake='jabber'>
<br> <alias>localhost</alias>
<br> <alias>localhost</alias>
<br> <alias>JABBER</alias>
<br> </r></td>
<td>T re-announces itself (?)</td>
</tr>
<tr VALIGN=TOP>
<td>JB-T</td>
<td><j type='config'>
<br> [ Same as above ]
<br></j></td>
<td>get config packet. Again?</td>
</tr>
</table>
<p>Scene 2: Client connects to jabberbox
<br>
<table BORDER WIDTH="100%" >
<tr>
<td>T-C</td>
<td></td>
<td>JB sez nothing. Usually, when you connect to a server, they announce
themselves. Well, except HTTP.</td>
</tr>
<tr VALIGN=TOP>
<td>C-T</td>
<td><j type='connection'>
<br> <ver>Jabber CLI Client 0.5 Dev</ver>
<br> <protocol>19990101</protocol>
<br></j></td>
<td>C announces (registers?) itself</td>
</tr>
<tr VALIGN=TOP>
<td>JB-T</td>
<td><j type='connection'>
<br> <name>localhost</name>
<br> <ver>JabberBox 0.5 Dev</ver>
<br> <protocol>19990101</protocol>
<br></j></td>
<td>T announces itself</td>
</tr>
</table>
<p>Scene 3: Client logs in
<br>
<table BORDER WIDTH="100%" >
<tr VALIGN=TOP>
<td>C-T</td>
<td><j type='login'>
<br> <user>dmag</user>
<br> <pass>xxxx</pass>
<br> <nick>fork</nick>
<br> </j></td>
<td>Is the nick the place where we're supposed to put "work" or "home"?
And how do we send a message to a particular nick?</td>
</tr>
<tr VALIGN=TOP>
<td>T-C</td>
<td></td>
<td>I think T should ack the login. On a slow link/server, C might assume
that T is happy when it's not.</td>
</tr>
</table>
<p>Scene 4: Client sends a simple message
<br>
<table BORDER WIDTH="100%" >
<tr VALIGN=TOP>
<td>C-T</td>
<td><j type='message'>
<br> <to>dmag</to>
<br> <say>to dmag</say>
<br></j></td>
<td>note that jabberbox is not involved. Cool.</td>
</tr>
<tr VALIGN=TOP>
<td>T-C</td>
<td><j type='message'>
<br> <from name='fork'>dmag</from>
<br> <say>to dmag</say>
<br></j></td>
<td>Shouldn't that be "nick=fork"?</td>
</tr>
</table>
<p>Scene 5: client sends a message thru localhost
<br>
<table BORDER WIDTH="100%" >
<tr VALIGN=TOP>
<td>C-T</td>
<td><j type='message'>
<br> <to>dmag@localhost</to>
<br> <say>zool is coming</say>
<br> </j></td>
<td></td>
</tr>
<tr VALIGN=TOP>
<td>T-JB</td>
<td><r from='localhost' to='localhost'>
<br> <j type='message' from='dmag@localhost' nick='fork'>
<br> <to>dmag</to>
<br> <say>zool is coming</say>
<br> </j>
<br></r></td>
<td>T forwards it to JB to send it to localhost</td>
</tr>
<tr VALIGN=TOP>
<td>JB-T</td>
<td><j type='message' from='dmag@localhost' nick='fork'>
<br> <to>dmag</to>
<br> <say>zool is coming</say>
<br></j></td>
<td>JB send it to back to T without the localhost..</td>
</tr>
<tr VALIGN=TOP>
<td>T-C</td>
<td><j type='message'>
<br> <from name='fork'>dmag@localhost</from>
<br> <say>zool is coming</say>
<br></j></td>
<td>Shouldn't that be nick=fork?</td>
</tr>
</table>
<p>Scene 6: Client sends message to his own nick@localhost
<br>
<table BORDER WIDTH="100%" >
<tr VALIGN=TOP>
<td>C-T</td>
<td><j type='message'>
<br> <to>fork@localhost</to>
<br> <say>fork message here</say>
<br></j></td>
<td></td>
</tr>
<tr VALIGN=TOP>
<td>T-JB</td>
<td><r from='localhost' to='localhost'>
<br> <j type='message' from='dmag@localhost' nick='fork'>
<br> <to>fork</to>
<br> <say>fork message here</say>
<br> </j>
<br></r></td>
<td>T forwards it to JB because it sez localhost</td>
</tr>
<tr VALIGN=TOP>
<td>JB-T</td>
<td><j type='message' from='dmag@localhost' nick='fork'>
<br> <to>fork</to>
<br> <say>fork message here</say>
<br></j></td>
<td>JB strips the localhost and sends it back to T</td>
</tr>
<tr VALIGN=TOP>
<td>T-JB</td>
<td><r from='localhost' to='localhost'>
<br> <j type='message' from='system@localhost'>
<br> <to name='fork'>dmag</to>
<br> <ext>error</ext>
<br> <subject>Message Rejected</subject><say>Your
message to fork could not be delivered, either the recipient doesn&apos;t
exist, or it couldn&apos;t be stored until they return online.
<br>Message:
<br>fork message here</say>
<br> </j>
<br></r></td>
<td>I guess T doesn't deliver to nicks.
<p>Note the XML apostrophe.
<p>If T knows it's for dmag, why does he send it to JB?</td>
</tr>
<tr VALIGN=TOP>
<td>JB-T</td>
<td><j type='message' from='system@localhost'>
<br> <to name='fork'>dmag</to>
<br> <ext>error</ext>
<br> <subject>Message Rejected</subject>
<br> <say>Your message to fork could not be delivered, either
the recipient doesn&apos;t exist, or it couldn&apos;t be stored
until they return online.
<br>Message:
<br>fork message here</say>
<br></j></td>
<td>JB just returns the exact same message... I'm getting Deja Vu ;)</td>
</tr>
<tr VALIGN=TOP>
<td>T-C</td>
<td><j type='message'>
<br> <from>system@localhost</from>
<br> <ext>error</ext>
<br> <subject>Message Rejected</subject>
<br> <say>Your message to fork could not be delivered, either
the recipient doesn&apos;t exist, or it couldn&apos;t
<br> be stored until they return online.
<br>Message:
<br>fork message here</say>
<br></j></td>
<td>Whew. It finally gets back to the client.</td>
</tr>
</table>
<p>Scene 7: Message to nowhere
<br>
<table BORDER WIDTH="100%" >
<tr VALIGN=TOP>
<td>C-T</td>
<td><j type='message'>
<br> <to>dmag@nowhere</to>
<br> <say>nothing</say>
<br></j></td>
<td></td>
</tr>
<tr VALIGN=TOP>
<td>T-JB</td>
<td><r from='localhost' to='nowhere'>
<br> <j type='message' from='dmag@localhost' nick='fork'>
<br> <to>dmag</to>
<br> <say>nothing</say>
<br> </j>
<br></r></td>
<td>nowhere's not here, so forward to JB.</td>
</tr>
<tr VALIGN=TOP>
<td>JB-T</td>
<td><j nick='fork' from='dmag@localhost' type='error' error_type='message'
error='Server Name Resolution Failed'>
<br> <to>dmag</to>
<br> <say>nothing</say>
<br></j></td>
<td>JB doesn't know where it is</td>
</tr>
<tr VALIGN=TOP>
<td>T-C</td>
<td></td>
<td>Oops, T doesn't return anyting, and C mistakenly prints "message
delivered". Maybe we need some acks here? Hint hint.</td>
</tr>
</table>
<br>
</body>
</html>