diff --git a/common/buf/io.go b/common/buf/io.go index 0b3cc6b2..e1de461d 100644 --- a/common/buf/io.go +++ b/common/buf/io.go @@ -54,12 +54,16 @@ func (r *TimeoutWrapperReader) ReadMultiBufferTimeout(duration time.Duration) (M close(r.done) }() } - time.Sleep(duration) + timeout := make(chan struct{}) + go func() { + time.Sleep(duration) + close(timeout) + }() select { case <-r.done: r.done = nil return r.mb, r.err - default: + case <-timeout: return nil, nil } }