Unverified Commit f7c26f49 authored by Whyrusleeping's avatar Whyrusleeping Committed by GitHub

Merge pull request #51 from libp2p/fix/clear-cancelled-dials

clear out extra dial jobs after dial finishes
parents 632ac482 2c697baf
......@@ -144,6 +144,15 @@ func (dl *dialLimiter) AddDialJob(dj *dialJob) {
go dl.executeDial(dj)
}
func (dl *dialLimiter) clearAllPeerDials(p peer.ID) {
dl.rllock.Lock()
defer dl.rllock.Unlock()
delete(dl.waitingOnPeerLimit, p)
// NB: the waitingOnFd list doesnt need to be cleaned out here, we will
// remove them as we encounter them because they are 'cancelled' at this
// point
}
// executeDial calls the dialFunc, and reports the result through the response
// channel when finished. Once the response is sent it also releases all tokens
// it held during the dial.
......
......@@ -293,6 +293,8 @@ func (s *Swarm) dialAddrs(ctx context.Context, p peer.ID, remoteAddrs <-chan ma.
defaultDialFail := fmt.Errorf("failed to dial %s (default failure)", p)
exitErr := defaultDialFail
defer s.limiter.clearAllPeerDials(p)
var active int
for {
select {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment