Skip to content

Commit a378643

Browse files
committed
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: coder#286
1 parent 14fb98e commit a378643

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

close_go113.go

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// +build !go1.16
2+
3+
package websocket
4+
5+
import (
6+
"errors"
7+
)
8+
9+
var errClosed = errors.New("use of closed network connection")

close_go116.go

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// +build go1.16
2+
3+
package websocket
4+
5+
import (
6+
"net"
7+
)
8+
9+
var errClosed = net.ErrClosed

close_notjs.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package websocket
55
import (
66
"context"
77
"encoding/binary"
8-
"errors"
98
"fmt"
109
"log"
1110
"time"
@@ -48,15 +47,13 @@ func (c *Conn) closeHandshake(code StatusCode, reason string) (err error) {
4847
return nil
4948
}
5049

51-
var errAlreadyWroteClose = errors.New("already wrote close")
52-
5350
func (c *Conn) writeClose(code StatusCode, reason string) error {
5451
c.closeMu.Lock()
5552
wroteClose := c.wroteClose
5653
c.wroteClose = true
5754
c.closeMu.Unlock()
5855
if wroteClose {
59-
return errAlreadyWroteClose
56+
return errClosed
6057
}
6158

6259
ce := CloseError{

0 commit comments

Comments
 (0)