aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/net/net_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/net/net_test.go')
-rw-r--r--libgo/go/net/net_test.go32
1 files changed, 31 insertions, 1 deletions
diff --git a/libgo/go/net/net_test.go b/libgo/go/net/net_test.go
index 3907ce4aa56..6dcfc2190e0 100644
--- a/libgo/go/net/net_test.go
+++ b/libgo/go/net/net_test.go
@@ -208,7 +208,6 @@ func TestListenerClose(t *testing.T) {
case "unix", "unixpacket":
defer os.Remove(ln.Addr().String())
}
- defer ln.Close()
if err := ln.Close(); err != nil {
if perr := parseCloseError(err); perr != nil {
@@ -221,6 +220,14 @@ func TestListenerClose(t *testing.T) {
c.Close()
t.Fatal("should fail")
}
+
+ if network == "tcp" {
+ cc, err := Dial("tcp", ln.Addr().String())
+ if err == nil {
+ t.Error("Dial to closed TCP listener succeeeded.")
+ cc.Close()
+ }
+ }
}
}
@@ -254,3 +261,26 @@ func TestPacketConnClose(t *testing.T) {
}
}
}
+
+// nacl was previous failing to reuse an address.
+func TestListenCloseListen(t *testing.T) {
+ const maxTries = 10
+ for tries := 0; tries < maxTries; tries++ {
+ ln, err := newLocalListener("tcp")
+ if err != nil {
+ t.Fatal(err)
+ }
+ addr := ln.Addr().String()
+ if err := ln.Close(); err != nil {
+ t.Fatal(err)
+ }
+ ln, err = Listen("tcp", addr)
+ if err == nil {
+ // Success. nacl couldn't do this before.
+ ln.Close()
+ return
+ }
+ t.Errorf("failed on try %d/%d: %v", tries+1, maxTries, err)
+ }
+ t.Fatalf("failed to listen/close/listen on same address after %d tries", maxTries)
+}