Browse Source

destroy timer immedietely after use

Darien Raymond 7 years ago
parent
commit
c81531fc77
1 changed files with 4 additions and 2 deletions
  1. 4 2
      transport/pipe/impl.go

+ 4 - 2
transport/pipe/impl.go

@@ -82,7 +82,9 @@ func (p *pipe) ReadMultiBuffer() (buf.MultiBuffer, error) {
 }
 }
 
 
 func (p *pipe) ReadMultiBufferTimeout(d time.Duration) (buf.MultiBuffer, error) {
 func (p *pipe) ReadMultiBufferTimeout(d time.Duration) (buf.MultiBuffer, error) {
-	timer := time.After(d)
+	timer := time.NewTimer(d)
+	defer timer.Stop()
+
 	for {
 	for {
 		data, err := p.readMultiBufferInternal()
 		data, err := p.readMultiBufferInternal()
 		if data != nil || err != nil {
 		if data != nil || err != nil {
@@ -93,7 +95,7 @@ func (p *pipe) ReadMultiBufferTimeout(d time.Duration) (buf.MultiBuffer, error)
 		select {
 		select {
 		case <-p.readSignal.Wait():
 		case <-p.readSignal.Wait():
 		case <-p.done.Wait():
 		case <-p.done.Wait():
-		case <-timer:
+		case <-timer.C:
 			return nil, buf.ErrReadTimeout
 			return nil, buf.ErrReadTimeout
 		}
 		}
 	}
 	}