@cryptotaxi247 / kubo / commits / b9130108c

bitswap: Don't clear 'active' until Connect calls are finished

License: MIT Signed-off-by: Jeromy <why@ipfs.io>

Jeromy committed Sep 1, 2016 at 08:26 UTC b9130108cf39188c6a17f80c00e00d8846695607
1 file changed +4
exchange/bitswap/workers.go
+4
@@ -201,14 +201,18 @@ func (bs *Bitswap) providerQueryManager(ctx context.Context) {
201 child, cancel := context.WithTimeout(e.Ctx, providerRequestTimeout)
202 defer cancel()
203 providers := bs.network.FindProvidersAsync(child, e.Key, maxProvidersPerRequest)
204 + wg := &sync.WaitGroup{}
205 for p := range providers {
206 + wg.Add(1)
207 go func(p peer.ID) {
208 + defer wg.Done()
209 err := bs.network.ConnectTo(child, p)
210 if err != nil {
211 log.Debug("failed to connect to provider %s: %s", p, err)
212 }
213 }(p)
214 }
215 + wg.Wait()
216 activeLk.Lock()
217 delete(active, e.Key)
218 activeLk.Unlock()