Fix pending of already completed pieces when pending ranges of pieces

This commit is contained in:
Matt Joiner 2016-02-08 21:36:50 +11:00
parent 3df7d61836
commit 24b8b13d2d
2 changed files with 5 additions and 12 deletions

View File

@ -1957,9 +1957,7 @@ func (t Torrent) AddPeers(pp []Peer) error {
func (t Torrent) DownloadAll() {
t.cl.mu.Lock()
defer t.cl.mu.Unlock()
for i := range iter.N(t.torrent.Info.NumPieces()) {
t.torrent.pendPiece(i, t.cl)
}
t.torrent.pendPieceRange(0, t.torrent.numPieces())
}
// Returns nil metainfo if it isn't in the cache. Checks that the retrieved

View File

@ -951,7 +951,7 @@ func (t *torrent) piecePriorityUncached(piece int) (ret piecePriority) {
return
}
func (t *torrent) pendPiece(piece int, cl *Client) {
func (t *torrent) pendPiece(piece int) {
if t.pendingPieces.Contains(piece) {
return
}
@ -974,20 +974,15 @@ func (t *torrent) getCompletedPieces() (ret bitmap.Bitmap) {
return
}
func (t *torrent) pendPieces(pend *bitmap.Bitmap) {
t.pendingPieces.Union(pend)
t.updatePiecePriorities()
}
func (t *torrent) unpendPieces(unpend *bitmap.Bitmap) {
t.pendingPieces.Sub(unpend)
t.updatePiecePriorities()
}
func (t *torrent) pendPieceRange(begin, end int) {
var bm bitmap.Bitmap
bm.AddRange(begin, end)
t.pendPieces(&bm)
for i := begin; i < end; i++ {
t.pendPiece(i)
}
}
func (t *torrent) unpendPieceRange(begin, end int) {