Eric Dumazet <eric.duma...@gmail.com> wrote: > On Wed, 2015-11-18 at 16:03 +0100, Florian Westphal wrote: > > RFC 1122, 4.2.2.13: > > [..] if new data is received after CLOSE is called, its TCP > > SHOULD send a RST to show that data was lost. > > > > When a connection is closed actively, it MUST linger in > > TIME-WAIT state [..]. > > > > We reset a connection, but destroy state immediately. > > > > After discussing this with Hannes, we decided it was preferable > > to also move to TW state to avoid immediate port reuse. > > > > packetdrill testcase: > > > > 0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3 > > 0.000 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 > > 0.000 bind(3, ..., ...) = 0 > > 0.000 listen(3, 1) = 0 > > 0.100 < S 0:0(0) win 29200 <mss 1460> > > 0.100 > S. 0:0(0) ack 1 <mss 1460> > > 0.200 < . 1:1(0) ack 1 win 257 > > 0.200 accept(3, ..., ...) = 4 > > // close our side. > > 0.210 close(4) = 0 > > // we should expect to see FIN now, sk moves to FIN_WAIT_1 > > 0.210 > F. 1:1(0) ack 1 win 29200 > > // receive data, but sk already closed -> Reset > > 0.300 < P. 1:1001(1000) ack 1 win 46 > > 0.300 > R 1:1(0) win 0
> This packetdrill test shows nothing special regarding your patch, it > should work right now with current kernels ??? Yes, but we kill the socket. I should have added 0.400 `ss -nito state time-wait` as last line... Before patch: no output after patch: tw socket shown. The on-wire behavior doesn't change unless further packets arrive. Old behaviour: more RST New behaviour: acks+tw timer restart Sorry for the confusion. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html