Hi BenoitRen, welcome to the forums!
lol, you know you could have asked me on IRC about this stuff, it would have been easier to answer you 'live' over IRC!
Anyways, if you open aMSN, open a chat with someone, then from the main window, press Ctrl-D, the protocol log window will appear.. clear it, then you can force a redownload of the display picture by right clicking on the display picture of the user in the chatwindow, then select 'Original' for the size.. it will redownload it and you can see what happens in the protocol with aMSN...
basically, what happens is that you accepted the transfer, then a new invitation is sent to initial a direct connection.. if you don't answer it (or it fails), it will go through the switchboard.. which is what you want... you'll notice that aMSN will ACK that invite, but won't do anything more with it..
those 4 bytes messages you keep receiving might be a 'please send an ack' message or something like that... or maybe they are 'data preparation' packets that need to be ACK-ed... make sure your P2P stack automatically ACKs any blob you receive...
Your alternatives are to ignore it.. or answer it with 200 OK (but you'd have to support the direct connection protocol) or just 603 decline it!! you can decline the second invite, i don't think it would affect the DP transfer!
about the BYE, I think (can't really remember) that BOTH parties should send a BYE... I think once you receive the BYE, you should also send a BYE.. and yes, definitely, you should ALWAYS *ACK* any blob you receive! (a blob being a message with the same sequence number).
If you don't ACK a blob, WLM will make you pay dearly for it...
I hope I was helpful.. if you have nay other questions, don't hesitate! I'll be glad to help!
p.s: it's funny, the coincidence made it that in the last week only, i've gotten into contact with 3 alternative MSN clients/libs and we shared thoughts on the protocol!
nirce to see some collaborations happening lately