Change-Id: I3ba6e97089ef6e69ba31dfb632df465859906a74
Reviewed-on: https://go-review.googlesource.com/15940
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Minux Ma <minux@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
case "unix", "unixpacket":
defer os.Remove(ln.Addr().String())
}
- defer ln.Close()
if err := ln.Close(); err != nil {
if perr := parseCloseError(err); perr != nil {
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()
+ }
+ }
}
}
return EISCONN
}
l, ok := net.listener[netAddr{f.proto, f.sotype, sa.key()}]
- if !ok {
+ if !ok || l.listenerClosed() {
net.Unlock()
return ECONNREFUSED
}
return nil
}
+func (f *netFile) listenerClosed() bool {
+ f.listener.Lock()
+ defer f.listener.Unlock()
+ return f.listener.closed
+}
+
func (f *netFile) close() error {
if f.listener != nil {
f.listener.close()