// defer func() {
// log.Println(pos, n, err)
// }()
- r.t.cl.mu.Lock()
- defer r.t.cl.mu.Unlock()
maxLen := r.t.torrent.Info.TotalLength() - pos
if maxLen <= 0 {
err = io.EOF
b = b[:maxLen]
}
again:
+ r.t.cl.mu.Lock()
r.raisePriorities(pos, len(b))
for !r.readable(pos) {
r.raisePriorities(pos, len(b))
}
avail := r.available(pos, int64(len(b)))
// log.Println("available", avail)
+ r.t.cl.mu.Unlock()
b1 := b[:avail]
pi := int(pos / r.t.Info().PieceLength)
tp := r.t.torrent.Pieces[pi]