Browse Source

Merge pull request #31 from whyrusleeping/master

use a timer instead of 'After' to avoid leaking resources
Armon Dadgar 8 years ago
parent
commit
d2be601be8
1 changed files with 6 additions and 1 deletions
  1. 6 1
      stream.go

+ 6 - 1
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