if err != nil {
log.Printf("%s: error writing chunk %v: %s", t, req, err)
t.pendRequest(req)
- // t.updatePiecePriority(msg.Index)
+ t.updatePieceCompletion(int(msg.Index))
return
}
}
func (t *torrent) updatePieceCompletion(piece int) {
- t.completedPieces.Set(piece, t.pieceCompleteUncached(piece))
+ pcu := t.pieceCompleteUncached(piece)
+ changed := t.completedPieces.Get(piece) != pcu
+ t.completedPieces.Set(piece, pcu)
+ if changed {
+ t.pieceChanged(piece)
+ }
}
// Non-blocking read. Client lock is not required.