From 3d1ae4b75c77a88ba3b20ada874f1027365a8060 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Mon, 17 Oct 2016 19:15:37 +0200 Subject: [PATCH] net: close the connection gracefully on Plan 9 Previously, we used to write the "hangup" message to the TCP connection control file to be able to close a connection, while waking up the readers. The "hangup" message closes the TCP connection with a RST message. This is a problem when closing a connection consecutively to a write, because the reader may not have time to acknowledge the message before the connection is closed, resulting in loss of data. We use a "close" message, newly implemented in the Plan 9 kernel to be able to close a TCP connection gracefully with a FIN. Updates #15464. Change-Id: I2050cc72fdf7a350bc6c9128bae7d14af11e599c Reviewed-on: https://go-review.googlesource.com/31271 Run-TryBot: David du Colombier <0intro@gmail.com> TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- src/net/fd_plan9.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/fd_plan9.go b/src/net/fd_plan9.go index 7533232dc9..e7dea696e7 100644 --- a/src/net/fd_plan9.go +++ b/src/net/fd_plan9.go @@ -128,7 +128,7 @@ func (fd *netFD) Close() error { // "write /net/tcp/39/listen: inappropriate use of fd" // But without it, Reads on dead conns hang forever. // See Issue 9554. - fd.ctl.WriteString("hangup") + fd.ctl.WriteString("close") } err := fd.ctl.Close() if fd.data != nil { -- 2.48.1