From e9d08816010996a14241f008ac097c5621bd1f30 Mon Sep 17 00:00:00 2001 From: Simon Ser <contact@emersion.fr> Date: Wed, 19 May 2021 23:52:23 +0200 Subject: [PATCH] Use net.ErrClosed Go 1.16 has introduced net.ErrClosed, which should be returned/wrapped when an I/O call is performed on a network connection which has already been closed. This is useful to avoid cluttering logs with messages like "failed to close WebSocket: already wrote close". Closes: https://github.com/nhooyr/websocket/issues/286 --- close.go | 4 +--- close_go113.go | 9 +++++++++ close_go116.go | 9 +++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 close_go113.go create mode 100644 close_go116.go diff --git a/close.go b/close.go index eab49a8..1e13ca7 100644 --- a/close.go +++ b/close.go @@ -119,15 +119,13 @@ func (c *Conn) closeHandshake(code StatusCode, reason string) (err error) { return nil } -var errAlreadyWroteClose = errors.New("already wrote close") - func (c *Conn) writeClose(code StatusCode, reason string) error { c.closeMu.Lock() wroteClose := c.wroteClose c.wroteClose = true c.closeMu.Unlock() if wroteClose { - return errAlreadyWroteClose + return errClosed } ce := CloseError{ diff --git a/close_go113.go b/close_go113.go new file mode 100644 index 0000000..4f586dc --- /dev/null +++ b/close_go113.go @@ -0,0 +1,9 @@ +// +build !go1.16 + +package websocket + +import ( + "errors" +) + +var errClosed = errors.New("use of closed network connection") diff --git a/close_go116.go b/close_go116.go new file mode 100644 index 0000000..0a6e5f1 --- /dev/null +++ b/close_go116.go @@ -0,0 +1,9 @@ +// +build go1.16 + +package websocket + +import ( + "net" +) + +var errClosed = net.ErrClosed -- GitLab