From fb30712af122f689784e91a2723e2cd511ccd2d3 Mon Sep 17 00:00:00 2001 From: Toyam Cox <Vaelatern@voidlinux.org> Date: Tue, 6 Aug 2019 03:35:49 -0400 Subject: [PATCH] netconn: Fix SetDeadline methods Closes #111 Closes #112 --- netconn.go | 12 ++++++++++-- websocket_test.go | 4 ++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/netconn.go b/netconn.go index 9c70b6f..06cbc2f 100644 --- a/netconn.go +++ b/netconn.go @@ -134,11 +134,19 @@ func (c *netConn) SetDeadline(t time.Time) error { } func (c *netConn) SetWriteDeadline(t time.Time) error { - c.writeTimer.Reset(t.Sub(time.Now())) + if t.IsZero() { + c.writeTimer.Stop() + } else { + c.writeTimer.Reset(t.Sub(time.Now())) + } return nil } func (c *netConn) SetReadDeadline(t time.Time) error { - c.readTimer.Reset(t.Sub(time.Now())) + if t.IsZero() { + c.readTimer.Stop() + } else { + c.readTimer.Reset(t.Sub(time.Now())) + } return nil } diff --git a/websocket_test.go b/websocket_test.go index 1dc5283..46f9c83 100644 --- a/websocket_test.go +++ b/websocket_test.go @@ -130,6 +130,8 @@ func TestHandshake(t *testing.T) { nc := websocket.NetConn(c) defer nc.Close() + nc.SetWriteDeadline(time.Time{}) + time.Sleep(1) nc.SetWriteDeadline(time.Now().Add(time.Second * 15)) for i := 0; i < 3; i++ { @@ -153,6 +155,8 @@ func TestHandshake(t *testing.T) { nc := websocket.NetConn(c) defer nc.Close() + nc.SetReadDeadline(time.Time{}) + time.Sleep(1) nc.SetReadDeadline(time.Now().Add(time.Second * 15)) read := func() error { -- GitLab