diff --git a/addrmgr/addrmanager.go b/addrmgr/addrmanager.go index 33c6ab13..f4e18479 100644 --- a/addrmgr/addrmanager.go +++ b/addrmgr/addrmanager.go @@ -338,6 +338,7 @@ func (a *AddrManager) getTriedBucket(netAddr *btcwire.NetAddress) int { // as a goroutine. func (a *AddrManager) addressHandler() { dumpAddressTicker := time.NewTicker(dumpAddressInterval) + defer dumpAddressTicker.Stop() out: for { select { @@ -348,7 +349,6 @@ out: break out } } - dumpAddressTicker.Stop() a.savePeers() a.wg.Done() log.Trace("Address handler done") diff --git a/cpuminer.go b/cpuminer.go index b8667b38..618e5489 100644 --- a/cpuminer.go +++ b/cpuminer.go @@ -72,6 +72,7 @@ func (m *CPUMiner) speedMonitor() { var hashesPerSec float64 var totalHashes uint64 ticker := time.NewTicker(time.Second * hpsUpdateSecs) + defer ticker.Stop() out: for { @@ -261,6 +262,7 @@ func (m *CPUMiner) generateBlocks(quit chan struct{}) { // Start a ticker which is used to signal checks for stale work and // updates to the speed monitor. ticker := time.NewTicker(time.Second * hashUpdateSecs) + defer ticker.Stop() out: for { // Quit when the miner is stopped. @@ -318,7 +320,6 @@ out: } } - ticker.Stop() m.workerWg.Done() minrLog.Tracef("Generate blocks worker done") } diff --git a/peer.go b/peer.go index 394bba49..bdb63ded 100644 --- a/peer.go +++ b/peer.go @@ -1557,6 +1557,7 @@ func (p *peer) queueHandler() { pendingMsgs := list.New() invSendQueue := list.New() trickleTicker := time.NewTicker(time.Second * 10) + defer trickleTicker.Stop() // We keep the waiting flag so that we know if we have a message queued // to the outHandler or not. We could use the presence of a head of