From bc9267846c00b9690fac372a5a13d730f770bcfe Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Thu, 14 Dec 2017 17:39:58 +0100 Subject: [PATCH] fix crash on init timeout = 0 --- common/signal/timer.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/common/signal/timer.go b/common/signal/timer.go index 6d1d8213..1784b869 100644 --- a/common/signal/timer.go +++ b/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 } }