Skip to content
This repository was archived by the owner on Dec 29, 2023. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 12 additions & 9 deletions conn.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ package websocket
import (
"bufio"
"encoding/binary"
"errors"
"io"
"io/ioutil"
"math/rand"
Expand All @@ -16,6 +15,7 @@ import (
"sync"
"time"
"unicode/utf8"
"github.com/go-errors/errors"
)

const (
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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
}
Expand All @@ -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
}
Expand Down Expand Up @@ -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
Expand Down
10 changes: 5 additions & 5 deletions conn_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ package websocket
import (
"bufio"
"bytes"
"errors"
"fmt"
"io"
"io/ioutil"
Expand All @@ -17,6 +16,7 @@ import (
"testing"
"testing/iotest"
"time"
"github.com/go-errors/errors"
)

var _ net.Error = errWriteTimeout
Expand Down Expand Up @@ -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)
}
}
Expand All @@ -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)
}
}
Expand Down
4 changes: 4 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -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
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -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=