downloader: free up peers from work when the downloader resets

This commit is contained in:
obscuren
2015-04-18 20:25:55 +02:00
parent 7c5d50f627
commit 6830ddb659
3 changed files with 22 additions and 5 deletions

View File

@ -60,13 +60,18 @@ func (c *queue) get(p *peer, max int) *chunk {
return false
}
hashes.Add(v)
i++
// Skip any hashes that have previously been requested from the peer
if !p.requested.Has(v) {
hashes.Add(v)
i++
}
return true
})
// remove hashes that have previously been fetched
hashes.Separate(p.requested)
// if no hashes can be requested return a nil chunk
if hashes.Size() == 0 {
return nil
}
// remove the fetchable hashes from hash pool
c.hashPool.Separate(hashes)