Skip to content

Commit

Permalink
eth/downloader: fix for Issue #16539 (#16546)
Browse files Browse the repository at this point in the history
  • Loading branch information
Domino Valdano authored and karalabe committed Apr 23, 2018
1 parent 744428c commit 7cf83ce
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions eth/downloader/downloader.go
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,7 @@ func (d *Downloader) UnregisterPeer(id string) error {
d.cancelLock.RUnlock()

if master {
d.Cancel()
d.cancel()
}
return nil
}
Expand Down Expand Up @@ -501,8 +501,10 @@ func (d *Downloader) spawnSync(fetchers []func() error) error {
return err
}

// Cancel cancels all of the operations and resets the queue.
func (d *Downloader) Cancel() {
// cancel aborts all of the operations and resets the queue. However, cancel does
// not wait for the running download goroutines to finish. This method should be
// used when cancelling the downloads from inside the downloader.
func (d *Downloader) cancel() {
// Close the current cancel channel
d.cancelLock.Lock()
if d.cancelCh != nil {
Expand All @@ -514,6 +516,12 @@ func (d *Downloader) Cancel() {
}
}
d.cancelLock.Unlock()
}

// Cancel aborts all of the operations and waits for all download goroutines to
// finish before returning.
func (d *Downloader) Cancel() {
d.cancel()
d.cancelWg.Wait()
}

Expand Down

0 comments on commit 7cf83ce

Please sign in to comment.