[icq-devel] direct connection



Alexandr V. Shutko AVShutko at mail.khstu.ru
Tue Nov 26 04:38:19 CET 2002


Hello icq-devel,
I have the problem.
I'm working on icq server IServerd. And now i'm adding V7 support to
IServerd.
I finished contact-list support, info retrieving/saving, and uin/details/email/white-pages
search and now started to code messages support...

I got much info (i'll post it to this mail-list tomorrow) but I can't understand one thing:

Let's say we have two ICQ2000 clients and one ICQ99a and IServerd.
After connect all these clients to IServerd I try to send message (it should be direct message
because server messages not supported yet) from ICQ99a to ICQ2000 - all work just fine... Then
I try to send message from ICQ2000 to ICQ99a and all is ok (icq99a clients receive this message
directly)... But when I try to send message from ICQ2000 to ICQ2000 it try to send it via snac(4,6)
THRU SERVER...

I've checked dc cookie - it's ok, also I checked that dc authorization not required by both clients.
What's I'm doing wrong? Is there any docs describing dc authorization procedure?
----------------------------------------------------------------------

Well... about login sequence... I was right... It is started by protocol negotiation sequence...
When I removed snac family 0x13 from SRV_FAMILIES snac(1,3) ICQ2002 stops sending family 13
snacs and when I tried to add user in contact list it just complains that server doesn't able
to add client to contact (this also mean that ICQ2002 can't work with client-side contact lists).
When I removed snac family 0x04 from SRV_FAMILIES snac ICQ2002 on sending message thru server
complains "Disconnection detected" but it is still connected.

Normal login sequence:

+ client connects to auth-server
+ auth-server send flap version to client
+ client send ident packet
+ auth-server send cookie and bos-server-addr
+ client closes connection

+ client connects to bos-server
+ bos-server sends flap protocol version
+ client sends cookie
+ server responds with snac(1,3) that contain supported families (at
this time client connected but dc info and capabilities fields not filled)
+ client sends families list and its versions snac(1,17)
+ server responds with its families versions snac(1,18)
+ client sends snac(1,6) requesting rate limites
+ server responds with snac(1,7)
+ client ack rate limits by snac(1,8) and this mean that it accepts limits...
================================
client starts ask server about protocol families parameters
.....
after cli_set_status server broadcast client presence to all its buddies....
(Now client connected and online)

finnaly client sends cli_ready packet that contain list of family
num+family version+dll version:

families 0x01, 0x15 client sends with coolicq.dll version
other families come with coolbos.dll version

Resume:
1. Client should not connect to server if it its flap protocol version
(current 0x00000001) is differ than server flap version
2. Client shouldn't send snac families not listed in snac(1,3)
3. Client should color its flower green after sending snac(1,1E)

-- 
With respect,
Alexandr V. Shutko                           mailto:AVShutko at mail.khstu.ru




More information about the icq-devel mailing list