From 93cee1e07b39ecdb0df1ab420a0eda8d9a252ed5 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sun, 3 May 2020 11:22:58 +0700 Subject: [PATCH 1/2] stop the deadline timer in Stream.Read and Write --- receive_stream.go | 1 + send_stream.go | 1 + 2 files changed, 2 insertions(+) diff --git a/receive_stream.go b/receive_stream.go index 9f06f21fad4..040e067cc4a 100644 --- a/receive_stream.go +++ b/receive_stream.go @@ -132,6 +132,7 @@ func (s *receiveStream) readImpl(p []byte) (bool /*stream completed */, int, err } if deadlineTimer == nil { deadlineTimer = utils.NewTimer() + defer deadlineTimer.Stop() } deadlineTimer.Reset(deadline) } diff --git a/send_stream.go b/send_stream.go index 6c71f0b8d24..ba6e0a34120 100644 --- a/send_stream.go +++ b/send_stream.go @@ -137,6 +137,7 @@ func (s *sendStream) Write(p []byte) (int, error) { } if deadlineTimer == nil { deadlineTimer = utils.NewTimer() + defer deadlineTimer.Stop() } deadlineTimer.Reset(deadline) } From 996dd420554f738ccdd133c4b047e02e3d9aae1b Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Mon, 4 May 2020 18:46:51 +0700 Subject: [PATCH 2/2] move deadlineTimer declaration out of the Read loop --- receive_stream.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/receive_stream.go b/receive_stream.go index 040e067cc4a..ce00cc468c5 100644 --- a/receive_stream.go +++ b/receive_stream.go @@ -104,6 +104,7 @@ func (s *receiveStream) readImpl(p []byte) (bool /*stream completed */, int, err } bytesRead := 0 + var deadlineTimer *utils.Timer for bytesRead < len(p) { if s.currentFrame == nil || s.readPosInFrame >= len(s.currentFrame) { s.dequeueNextFrame() @@ -112,7 +113,6 @@ func (s *receiveStream) readImpl(p []byte) (bool /*stream completed */, int, err return false, bytesRead, s.closeForShutdownErr } - var deadlineTimer *utils.Timer for { // Stop waiting on errors if s.closedForShutdown {