Skip to content

Commit e9d0881

Browse files
emersionnhooyr
authored andcommitted
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: #286
1 parent 4ab2f54 commit e9d0881

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

close.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -119,15 +119,13 @@ func (c *Conn) closeHandshake(code StatusCode, reason string) (err error) {
119119
return nil
120120
}
121121

122-
var errAlreadyWroteClose = errors.New("already wrote close")
123-
124122
func (c *Conn) writeClose(code StatusCode, reason string) error {
125123
c.closeMu.Lock()
126124
wroteClose := c.wroteClose
127125
c.wroteClose = true
128126
c.closeMu.Unlock()
129127
if wroteClose {
130-
return errAlreadyWroteClose
128+
return errClosed
131129
}
132130

133131
ce := CloseError{

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

0 commit comments

Comments
 (0)