[JDEV] Transport Authors Please Read -- Jabber 1.3+, etc...
David Waite
user at internet.com
Wed Nov 22 21:12:21 CST 2000
Keith Minkler wrote:
Are you planning to port/maintain MIO back on the 1.2.x series, or maintain separate branches for MIO and non-MIO transports (for bug fixes) ? I'm very nervous that many people have barely been able to get the server working (much fewer the transports), and you are now moving on to a new incompatible series.
Also, while you could register multiple times with ICQ, it would be very difficult to decide which ICQ session to send messages through (if you have user 1 registered with transport session 1 and user 2 registered with transport session 2, and session 2 is down, do you send through session 1? if both sessions have user1 registered, how do you present the choice of sessions to users?). Most clients already have to deal with enough complexity - if you are going to dangle a carrot, at least have the decency to show the rotten side of it ;-)
-David Waite
> I'm in the middle of rewriting Yahoo-Transport for the Jabber 1.3+ server, (MIO enabled, jabberd .so) and I've made some cool improvements that I'd like to see make it into all the transports...
>
> 1> XDB -- with Jabber 1.2+, transports can now use XDB storage to store user specific data, instead of putting the passwords plain-text into the roster, you can now store it in XDB, so that no passwords are sent over the wire (except when registering) this will increase security, and make alot of people happy.
>
> 2> MIO -- use it! MIO provides an interface for socket handling, and hides the complexity of using sockets... Internally, it will use Select to manage the sockets, allowing better performance than tstreams does, it can also be swapped out to provide a sig/IO, polld, async/IO, etc backend, transparent to the transport, this will help with scaling, and reduce the number of threads needed in the transport (Yahoo transport now uses no threads of it's own)
>
> 3> Multiple Registrations -- if you store your passwords and logon info in XDB, you can support multiple registrations from clients. (ie, if I have 3 ICQ accounts, I can log into them all at the same time through jabber.. this hasn't been hashed out yet, but I was thinking something like returing the iq:register GET, like <iq ...><query iq:register>...item1..</query><query iq:register>... item2..</query> ....</iq>, so each registration is stored in it's own query tag.. this way we don't break older clients.. they will just see the first registration, and we can then have more advanced clients (or every client) support multiple registrations, and have cool GUIs for this data..
>
> 4> PPDB and multiple JIDs logged in to one account -- The transports should allow for a user to be logged into jabber multiple times (different resources) and still use the same session in the transport.. this is easily accomplished using PPDB, just feed every presence tag you get from users into the PPDB, then query the PPDB to determine if the user is still logged into jabber, when you get an unavailable from them.
>
> 5> 407 errors -- normally used to tell the user they don't have a subscription when they try to do things like sending messages across the transport.. currently, you had to asume if they didn't have an active session, then they don't have a registration, which is a false assumption.. but you can now query XDB for the registration data, the user doesn't even have to be logged in.. this way, if they don't have a sessions, but they have registered, instead of sending a 407, you should log them in, and deliver thier message, like a good transport.
>
> 6> Route Tags & DNS lookups -- I *think* that using MIO to connect to a host (like the remote network) will block the server during the lookup -- this is bad! one way to get around this is to use the dnsrv component. setup your dnsrv component to resend back to your transport, when you need to do a lookup, send it to dnsrv, it will resolve the host in a non-blocking manner, and route you back the IP address to connect to, so you can just connect to the IP, without blocking the server... A must have!!
>
> 7> That's all i can think of now.. if you have more issues you would like to see make it into transports, I'd love to hear them, or if you want to make corrections to these items, or comment, send them back to this list!
>
> Thanks for your time!
>
> Keith Minkler
>
> _______________________________________________
> jdev mailing list
> jdev at jabber.org
> http://mailman.jabber.org/listinfo/jdev
More information about the JDev
mailing list