[Bug 217637] One TCP connection accepted TWO times

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sun Mar 19 18:03:31 UTC 2017


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=217637

--- Comment #34 from slw at zxy.spb.ru ---
(In reply to Michael Tuexen from comment #33)

Right, FIN_WAIT_1.

> Then the state is FIN-WAIT-1. Then it receives the second part of the request. Since the socket is closed, it responds with a RST segment and moves the connection to CLOSED.

I am don't understund this. CLOSING must be only after got FIN.
FIN don't received, data in buffer don't ack, what reasson to CLOSING
transition and lost data?

I mean resend response and FIN again.

"If a socket structure is associated with the file structure, soclose is
called, f_data is cleared, and any posted error is returned. 

soclose Function

This function aborts any connections that are pending on the socket (i.e., that
have not yet been
accepted by a process), waits for data to be transmitted to the foreign system,
and releases the data
structures that are no longer needed.
soclose is shown in Figure 15.39."

"In general, TCP must still process incoming data,
so it calls tcpacked to handle incoming acknowledgements, tcpdata to process
data in the segment, and tcpswindow to adjust its sending window size. Once the
input has been processed, tcpfin1 checks to see if it should make a state
transition. If the TCBF_RDONE bit is set, a FIN has arrived and so has all data
in the sequence up to the FIN. If the TCPF_FIN bit is cleared, an ACK has
arrived for the outgoing FIN. Tcpfin1 uses these two bits to determine whether
to make a transition to the CLOSING, FINWAIT2, or TIMEWAIT states"

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-net mailing list