From 0947342fc3730f623f885a4518078e0d0287201e Mon Sep 17 00:00:00 2001 From: Matthew Quigley Date: Fri, 11 Oct 2019 12:05:58 -0700 Subject: [PATCH] Switch to go-errors/errors --- conn.go | 21 ++++++++++++--------- conn_test.go | 10 +++++----- go.mod | 4 ++++ go.sum | 4 ++++ 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/conn.go b/conn.go index 6f17cd29..fe77f20f 100644 --- a/conn.go +++ b/conn.go @@ -7,7 +7,6 @@ package websocket import ( "bufio" "encoding/binary" - "errors" "io" "io/ioutil" "math/rand" @@ -16,6 +15,7 @@ import ( "sync" "time" "unicode/utf8" + "github.com/go-errors/errors" ) const ( @@ -148,7 +148,7 @@ func (e *CloseError) Error() string { // IsCloseError returns boolean indicating whether the error is a *CloseError // with one of the specified codes. func IsCloseError(err error, codes ...int) bool { - if e, ok := err.(*CloseError); ok { + if e, ok := errors.Unwrap(err).(*CloseError); ok { for _, code := range codes { if e.Code == code { return true @@ -161,7 +161,7 @@ func IsCloseError(err error, codes ...int) bool { // IsUnexpectedCloseError returns boolean indicating whether the error is a // *CloseError with a code not in the list of expected codes. func IsUnexpectedCloseError(err error, expectedCodes ...int) bool { - if e, ok := err.(*CloseError); ok { + if e, ok := errors.Unwrap(err).(*CloseError); ok { for _, code := range expectedCodes { if e.Code == code { return false @@ -186,7 +186,7 @@ func newMaskKey() [4]byte { } func hideTempErr(err error) error { - if e, ok := err.(net.Error); ok && e.Temporary() { + if e, ok := errors.Unwrap(err).(net.Error); ok && e.Temporary() { err = &netError{msg: e.Error(), timeout: e.Timeout()} } return err @@ -369,7 +369,7 @@ func (c *Conn) writeFatal(err error) error { func (c *Conn) read(n int) ([]byte, error) { p, err := c.br.Peek(n) if err == io.EOF { - err = errUnexpectedEOF + err = errors.WrapPrefix(errUnexpectedEOF, "conn.read", 0) } c.br.Discard(len(p)) return p, err @@ -721,7 +721,10 @@ func (w *messageWriter) Close() error { if w.err != nil { return w.err } - return w.flushFrame(true, nil) + if err := w.flushFrame(true, nil); err != nil { + return err + } + return nil } // WritePreparedMessage writes prepared message into connection. @@ -1027,7 +1030,7 @@ func (r *messageReader) Read(b []byte) (int, error) { rem -= int64(n) c.setReadRemaining(rem) if c.readRemaining > 0 && c.readErr == io.EOF { - c.readErr = errUnexpectedEOF + c.readErr = errors.WrapPrefix(errUnexpectedEOF, "messageReader.Read short", 0) } return n, c.readErr } @@ -1048,7 +1051,7 @@ func (r *messageReader) Read(b []byte) (int, error) { err := c.readErr if err == io.EOF && c.messageReader == r { - err = errUnexpectedEOF + err = errors.WrapPrefix(errUnexpectedEOF, "messageReader.Read end", 0) } return 0, err } @@ -1132,7 +1135,7 @@ func (c *Conn) SetPingHandler(h func(appData string) error) { err := c.WriteControl(PongMessage, []byte(message), time.Now().Add(writeWait)) if err == ErrCloseSent { return nil - } else if e, ok := err.(net.Error); ok && e.Temporary() { + } else if e, ok := errors.Unwrap(err).(net.Error); ok && e.Temporary() { return nil } return err diff --git a/conn_test.go b/conn_test.go index bd96e0ad..8878719f 100644 --- a/conn_test.go +++ b/conn_test.go @@ -7,7 +7,6 @@ package websocket import ( "bufio" "bytes" - "errors" "fmt" "io" "io/ioutil" @@ -17,6 +16,7 @@ import ( "testing" "testing/iotest" "time" + "github.com/go-errors/errors" ) var _ net.Error = errWriteTimeout @@ -402,11 +402,11 @@ func TestEOFWithinFrame(t *testing.T) { t.Fatalf("%d: NextReader() returned %d, %v", n, op, err) } _, err = io.Copy(ioutil.Discard, r) - if err != errUnexpectedEOF { + if !errors.Is(err, errUnexpectedEOF) { t.Fatalf("%d: io.Copy() returned %v, want %v", n, err, errUnexpectedEOF) } _, _, err = rc.NextReader() - if err != errUnexpectedEOF { + if !errors.Is(err, errUnexpectedEOF) { t.Fatalf("%d: NextReader() returned %v, want %v", n, err, errUnexpectedEOF) } } @@ -427,11 +427,11 @@ func TestEOFBeforeFinalFrame(t *testing.T) { t.Fatalf("NextReader() returned %d, %v", op, err) } _, err = io.Copy(ioutil.Discard, r) - if err != errUnexpectedEOF { + if !errors.Is(err, errUnexpectedEOF) { t.Fatalf("io.Copy() returned %v, want %v", err, errUnexpectedEOF) } _, _, err = rc.NextReader() - if err != errUnexpectedEOF { + if !errors.Is(err, errUnexpectedEOF) { t.Fatalf("NextReader() returned %v, want %v", err, errUnexpectedEOF) } } diff --git a/go.mod b/go.mod index 1a7afd50..23d4c014 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,7 @@ module github.com/gorilla/websocket go 1.12 + +replace github.com/go-errors/errors => github.com/picmonkey/errors v0.0.0-20160713235446-0cb7841af761 + +require github.com/go-errors/errors v1.0.1 diff --git a/go.sum b/go.sum index cf4fbbaa..8c8297e3 100644 --- a/go.sum +++ b/go.sum @@ -1,2 +1,6 @@ +github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/picmonkey/errors v0.0.0-20160713235446-0cb7841af761 h1:4+cHFHkB0Va6WDerCxYM0ygTaVSJCnmLoEaWkIzDvEY= +github.com/picmonkey/errors v0.0.0-20160713235446-0cb7841af761/go.mod h1:ghX664bvaQYitkpEphfq4cTgWXt/AKNojh1y+LIT/as=