From 3a0b5a7d8e74061ca8b7c5d6db9821d87951197e Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Tue, 6 Nov 2018 17:04:36 +0100 Subject: [PATCH] Fix CPU use (#40) * Move default case out of select block. * Add defers to close resources. * `go fmt` cleanup. --- ping.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ping.go b/ping.go index c53d84e..e986188 100644 --- a/ping.go +++ b/ping.go @@ -286,6 +286,7 @@ func (p *Pinger) run() { var wg sync.WaitGroup recv := make(chan *packet, 5) + defer close(recv) wg.Add(1) go p.recvICMP(conn, recv, &wg) @@ -295,7 +296,9 @@ func (p *Pinger) run() { } timeout := time.NewTicker(p.Timeout) + defer timeout.Stop() interval := time.NewTicker(p.Interval) + defer interval.Stop() for { select { @@ -316,12 +319,11 @@ func (p *Pinger) run() { if err != nil { fmt.Println("FATAL: ", err.Error()) } - default: - if p.Count > 0 && p.PacketsRecv >= p.Count { - close(p.done) - wg.Wait() - return - } + } + if p.Count > 0 && p.PacketsRecv >= p.Count { + close(p.done) + wg.Wait() + return } } }