diff --git a/stream.go b/stream.go index ff005eb..fe7a97b 100644 --- a/stream.go +++ b/stream.go @@ -118,12 +118,17 @@ START: WAIT: var timeout <-chan time.Time + var timer *time.Timer if !s.readDeadline.IsZero() { delay := s.readDeadline.Sub(time.Now()) - timeout = time.After(delay) + timer = time.NewTimer(delay) + timeout = timer.C } select { case <-s.recvNotifyCh: + if timer != nil { + timer.Stop() + } goto START case <-timeout: return 0, ErrTimeout