mirror of
https://github.com/golang/go
synced 2024-11-18 07:04:52 -07:00
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 <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
a431bdc712
commit
3d1ae4b75c
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user