From 67d178946a9b66e2d84823994c88c649a2080262 Mon Sep 17 00:00:00 2001 From: Gary Burd Date: Mon, 23 Dec 2013 12:01:25 -0800 Subject: [PATCH] Implement net.Error on timeout errors. Fixes #10. --- conn.go | 12 +++++++++++- conn_test.go | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/conn.go b/conn.go index 3c841b5..3260061 100644 --- a/conn.go +++ b/conn.go @@ -65,9 +65,19 @@ var ( ErrReadLimit = errors.New("websocket: read limit exceeded") ) +type websocketError struct { + msg string + temporary bool + timeout bool +} + +func (e *websocketError) Error() string { return e.msg } +func (e *websocketError) Temporary() bool { return e.temporary } +func (e *websocketError) Timeout() bool { return e.timeout } + var ( + errWriteTimeout = &websocketError{msg: "websocket: write timeout", timeout: true} errBadWriteOpCode = errors.New("websocket: bad write message type") - errWriteTimeout = errors.New("websocket: write timeout") errWriteClosed = errors.New("websocket: write closed") errInvalidControlFrame = errors.New("websocket: invalid control frame") ) diff --git a/conn_test.go b/conn_test.go index 3a06d34..bd588e3 100644 --- a/conn_test.go +++ b/conn_test.go @@ -15,6 +15,8 @@ import ( "time" ) +var timeoutErrImplementsNetError net.Error = errWriteTimeout + type fakeNetConn struct { io.Reader io.Writer