diff options
author | Nayana Bidari <nybidari@google.com> | 2020-09-28 16:37:44 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-09-28 16:39:12 -0700 |
commit | 237b761f9a61ad1a821320e68f5a71e7cda6b29e (patch) | |
tree | 45e97621c612c5ca7ec52ad52f216a523ecac9c7 /test/packetimpact | |
parent | a5acc0616c9552c7252e3f133f9ad4648422cc5f (diff) |
Fix lingering of TCP socket in the initial state.
When the socket is set with SO_LINGER and close()'d in the initial state, it
should not linger and return immediately.
PiperOrigin-RevId: 334263149
Diffstat (limited to 'test/packetimpact')
-rw-r--r-- | test/packetimpact/tests/tcp_linger_test.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/test/packetimpact/tests/tcp_linger_test.go b/test/packetimpact/tests/tcp_linger_test.go index 913e49e06..b9a0409aa 100644 --- a/test/packetimpact/tests/tcp_linger_test.go +++ b/test/packetimpact/tests/tcp_linger_test.go @@ -251,3 +251,20 @@ func TestTCPLingerShutdownSendNonZeroTimeout(t *testing.T) { }) } } + +func TestTCPLingerNonEstablished(t *testing.T) { + dut := testbench.NewDUT(t) + newFD := dut.Socket(t, unix.AF_INET, unix.SOCK_STREAM, unix.IPPROTO_TCP) + dut.SetSockLingerOption(t, newFD, lingerDuration, true) + + // As the socket is in the initial state, Close() should not linger + // and return immediately. + start := time.Now() + dut.CloseWithErrno(context.Background(), t, newFD) + diff := time.Since(start) + + if diff > lingerDuration { + t.Errorf("expected close to return within %s, but returned after %s", lingerDuration, diff) + } + dut.TearDown() +} |