reader.go | 4 ++-- torrent.go | 7 +++++++ diff --git a/reader.go b/reader.go index 0f92343a20c3b448d8567b8e37a2071836f030a7..f0b81668d4279c69a74fe43dfeec527b16637954 100644 --- a/reader.go +++ b/reader.go @@ -136,8 +136,8 @@ return } log.Printf("%s: error reading from torrent storage pos=%d: %s", r.t, pos, err) r.t.cl.mu.Lock() - r.t.torrent.updatePieceCompletion(pi) - r.t.torrent.updatePiecePriority(pi) + r.t.torrent.updateAllPieceCompletions() + r.t.torrent.updatePiecePriorities() r.t.cl.mu.Unlock() } } diff --git a/torrent.go b/torrent.go index daca65c0a3871fe2fc4a3e1146150a2c6e8a86dc..3bbbcef8623bb73417fdc83b0dde7ad650403a8f 100644 --- a/torrent.go +++ b/torrent.go @@ -17,6 +17,7 @@ "github.com/anacrolix/missinggo/bitmap" "github.com/anacrolix/missinggo/itertools" "github.com/anacrolix/missinggo/perf" "github.com/anacrolix/missinggo/pubsub" + "github.com/bradfitz/iter" "github.com/anacrolix/torrent/bencode" "github.com/anacrolix/torrent/metainfo" @@ -1050,3 +1051,9 @@ t.Pieces[pi].waitNoPendingWrites() } return t.data.ReadAt(b, off) } + +func (t *torrent) updateAllPieceCompletions() { + for i := range iter.N(t.numPieces()) { + t.updatePieceCompletion(i) + } +}