// Verify that when a process uses SO_LINGER with {onoff=1, linger=0}, // and then closes the socket, the kernel sends a RST. // (TODO(ncardwell): it also frees the socket immediately without any // time in TIME_WAIT; we should test this too once we have some // infrastructure for testing this kind of thing reliably...) // Initialize a server socket. 0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3 +0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 +0 bind(3, ..., ...) = 0 +0 listen(3, 1) = 0 +0 < S 0:0(0) win 32792 +0 > S. 0:0(0) ack 1 +0 < . 1:1(0) ack 1 win 257 +0 accept(3, ..., ...) = 4 +0 setsockopt(4, SOL_SOCKET, SO_LINGER, {onoff=1, linger=0}, 8) = 0 // Write some data, receive an ACK. +0 write(4, ..., 1000) = 1000 +0 > P. 1:1001(1000) ack 1 +0 < . 1:1(0) ack 1001 win 257 // Clean up. +0 close(4) = 0 +0 > R. 1001:1001(0) ack 1