From 8a4087aee64e7f0f73c9e286e159ab9bc5f564bf Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Wed, 26 Apr 2017 09:27:15 +0200 Subject: [PATCH] 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 Reviewed-by: Brad Fitzpatrick --- src/net/tcpsock_plan9.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/net/tcpsock_plan9.go b/src/net/tcpsock_plan9.go index d2860607f8..e37f0657c0 100644 --- a/src/net/tcpsock_plan9.go +++ b/src/net/tcpsock_plan9.go @@ -48,6 +48,9 @@ func (ln *TCPListener) accept() (*TCPConn, 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 { ln.fd.ctl.Close() return err -- 2.50.0