Przeglądaj źródła

fix crash on init timeout = 0

Darien Raymond 7 lat temu
rodzic
commit
bc9267846c
1 zmienionych plików z 7 dodań i 2 usunięć
  1. 7 2
      common/signal/timer.go

+ 7 - 2
common/signal/timer.go

@@ -26,6 +26,13 @@ func (t *ActivityTimer) SetTimeout(timeout time.Duration) {
 }
 
 func (t *ActivityTimer) run(ctx context.Context, cancel context.CancelFunc) {
+	defer cancel()
+
+	timeout := <-t.timeout
+	if timeout == 0 {
+		return
+	}
+
 	ticker := time.NewTicker(<-t.timeout)
 	defer func() {
 		ticker.Stop()
@@ -38,7 +45,6 @@ func (t *ActivityTimer) run(ctx context.Context, cancel context.CancelFunc) {
 			return
 		case timeout := <-t.timeout:
 			if timeout == 0 {
-				cancel()
 				return
 			}
 
@@ -51,7 +57,6 @@ func (t *ActivityTimer) run(ctx context.Context, cancel context.CancelFunc) {
 		case <-t.updated:
 		// Updated keep waiting.
 		default:
-			cancel()
 			return
 		}
 	}