Skip to content

Commit b509f6b

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 8dee580 commit b509f6b

File tree

4 files changed

+21
-7
lines changed

4 files changed

+21
-7
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{

write.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"context"
88
"crypto/rand"
99
"encoding/binary"
10-
"errors"
1110
"fmt"
1211
"io"
1312
"time"
@@ -53,14 +52,14 @@ type msgWriter struct {
5352

5453
func (mw *msgWriter) Write(p []byte) (int, error) {
5554
if mw.closed {
56-
return 0, errors.New("cannot use closed writer")
55+
return 0, errClosed
5756
}
5857
return mw.mw.Write(p)
5958
}
6059

6160
func (mw *msgWriter) Close() error {
6261
if mw.closed {
63-
return errors.New("cannot use closed writer")
62+
return errClosed
6463
}
6564
mw.closed = true
6665
return mw.mw.Close()

0 commit comments

Comments
 (0)