summaryrefslogtreecommitdiffhomepage
path: root/test/packetimpact/tests/tcp_linger_test.go
diff options
context:
space:
mode:
authorNayana Bidari <nybidari@google.com>2020-09-28 16:37:44 -0700
committergVisor bot <gvisor-bot@google.com>2020-09-28 16:39:12 -0700
commit237b761f9a61ad1a821320e68f5a71e7cda6b29e (patch)
tree45e97621c612c5ca7ec52ad52f216a523ecac9c7 /test/packetimpact/tests/tcp_linger_test.go
parenta5acc0616c9552c7252e3f133f9ad4648422cc5f (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/tests/tcp_linger_test.go')
-rw-r--r--test/packetimpact/tests/tcp_linger_test.go17
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()
+}