"wrong" and "stupid" are funny terms for open source developers to use
when talking about someones efforts to improve performance (even if you
do not agree with the procedures)...
lets clarify with an example:
It is wrong and stupid since it removes one of the nice features of TCP :
reliability.
Without thinking an implementoir might think lets just RST the session
after i sent out the
last segment to the other and performance will be better than doing it the
real way with FIN.
So he writes code that generates packets like :
Server->Client TCP last segment of the data pdu
Server->Client TCP RST
Now, will the server ever know if teh data was received reliably or not?
Will it even work?
Think packet reordering. When the RST arrives to the client before the data
segment so the client
kills the session before it has even received the data it was waiting for.
Bad.
This can not happen if you close the session using FIN.
So essentially that implementation is now using unreliable tcp and no one
can figure out why there are sometimes "issues" causing the client to
reissue the commands across a new session.
Worse, Server does not even know whether the client received the data or
not.
whats the point in using TCP if not to know whether the data arrived safely
to the other end or not.
_________________________________________________________________
What's your house worth? Click here to find out:
http://www.ninemsn.realestate.com.au