err = nil
return
}
- log.Printf("error reading torrent %q piece %d offset %d, %d bytes: %s", r.t, pi, po, len(b1), err)
r.t.cl.mu.Lock()
+ log.Printf("error reading torrent %q piece %d offset %d, %d bytes: %s", r.t, pi, po, len(b1), err)
r.t.updateAllPieceCompletions()
r.t.updateAllPiecePriorities()
r.t.cl.mu.Unlock()
return
}
err := t.announceDHT(true)
- if err == nil {
+ func() {
cl.mu.Lock()
- t.numDHTAnnounces++
- cl.mu.Unlock()
- } else {
- log.Printf("error announcing %q to DHT: %s", t, err)
- }
+ defer cl.mu.Unlock()
+ if err == nil {
+ t.numDHTAnnounces++
+ } else {
+ log.Printf("error announcing %q to DHT: %s", t, err)
+ }
+ }()
select {
case <-t.closed.LockedChan(&cl.mu):
return