Okay, I've been trying to see if I can't fix linux to handle a rather unusual
case in TCP which causes a socket to end up in CLOSING state for 90 mins (until
it times out). The scenario is thus:
Machine A Machine B
ESTABLISHED ESTABLISHED
<-- FIN -- close()
CLOSE_WAIT FIN_WAIT_1
-- ACK <lost>
CLOSE_WAIT FIN_WAIT_1
close() -- FIN -->
LAST_ACK CLOSING
<-- ACK --
CLOSED CLOSING
If, at this point, Machine A has a socket in LISTEN on the same port, FIN
retransmissions from Machine B will be silently ignored. :(
I can't think of a way to fix this at Machine A. The obvious solution for
Machine B is to RST any stray FINs that are sent to a LISTENing socket. (Patch
to 2.2.3 attached)
Taral
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to [EMAIL PROTECTED]