diff --git a/merkledag/merkledag.go b/merkledag/merkledag.go index 0bd32b01550..f752ff50f06 100644 --- a/merkledag/merkledag.go +++ b/merkledag/merkledag.go @@ -399,12 +399,12 @@ func EnumerateChildrenAsync(ctx context.Context, ds DAGService, c *cid.Cid, visi done := make(chan struct{}) var setlk sync.Mutex - + errChan := make(chan error) fetchersCtx, cancel := context.WithCancel(ctx) - + defer cancel() - + for i := 0; i < FetchGraphConcurrency; i++ { go func() { for ic := range feed { @@ -413,11 +413,11 @@ func EnumerateChildrenAsync(ctx context.Context, ds DAGService, c *cid.Cid, visi errChan <- err return } - + setlk.Lock() unseen := visit(ic) setlk.Unlock() - + if unseen { select { case out <- n: @@ -466,7 +466,7 @@ func EnumerateChildrenAsync(ctx context.Context, ds DAGService, c *cid.Cid, visi } case err := <-errChan: return err - + case <-ctx.Done(): return ctx.Err() }