Commit 8a4087ae authored by David du Colombier's avatar David du Colombier

net: fix close on closed listener on Plan 9

Since close errors have been cleaned up in CL 39997,
TestCloseError is failing on Plan 9, because
TCPListener.Close didn't check that the listener
has already been closed before writing the "hangup"
string to the listener control file.

This change fixes TCPListener.Close on Plan 9,
by closing poll.FD before writing the "hangup"
string.

Fixes #20128.

Change-Id: I13862b23a9055dd1be658acef7066707d98c591f
Reviewed-on: https://go-review.googlesource.com/41850
Run-TryBot: David du Colombier <0intro@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
parent aecf73fc
...@@ -48,6 +48,9 @@ func (ln *TCPListener) accept() (*TCPConn, error) { ...@@ -48,6 +48,9 @@ func (ln *TCPListener) accept() (*TCPConn, error) {
} }
func (ln *TCPListener) close() error { func (ln *TCPListener) close() error {
if err := ln.fd.pfd.Close(); err != nil {
return err
}
if _, err := ln.fd.ctl.WriteString("hangup"); err != nil { if _, err := ln.fd.ctl.WriteString("hangup"); err != nil {
ln.fd.ctl.Close() ln.fd.ctl.Close()
return err return err
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment