From 5048959fdcf640da10091789871778131f9c27e3 Mon Sep 17 00:00:00 2001 From: Roei Erez Date: Wed, 10 Apr 2019 05:54:18 +0300 Subject: [PATCH] connmgr: Check for canceled connection before connect This is a port of btcd commit 9bfb2ca0346b57e246cc96fa31074df521175240. This will ensure cancelation is reliable for all cases. --- connmgr/connmanager.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/connmgr/connmanager.go b/connmgr/connmanager.go index c22313be..7ce81a90 100644 --- a/connmgr/connmanager.go +++ b/connmgr/connmanager.go @@ -409,6 +409,14 @@ func (cm *ConnManager) Connect(c *ConnReq) { if atomic.LoadInt32(&cm.stop) != 0 { return } + + // During the time we wait for retry there is a chance that this + // connection was already cancelled. + if c.State() == ConnCanceled { + log.Debugf("Ignoring connect for canceled connreq=%v", c) + return + } + if atomic.LoadUint64(&c.id) == 0 { atomic.StoreUint64(&c.id, atomic.AddUint64(&cm.connReqCount, 1))