reader.go | 2 +- torrent.go | 14 ++++++++------ diff --git a/reader.go b/reader.go index 1c8bce797dc4d9b9450ca5a865cc039b5b0a64b0..ed4da8aa3be30460faa7e660d036ee634895eee8 100644 --- a/reader.go +++ b/reader.go @@ -208,8 +208,8 @@ if n != 0 { 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() diff --git a/torrent.go b/torrent.go index f60b3865f0c02b74c422783ba5f622f8f2fcfd8b..337040f5dd7303376748ffa021fb42d1d433c26c 100644 --- a/torrent.go +++ b/torrent.go @@ -1245,13 +1245,15 @@ case <-t.closed.LockedChan(&cl.mu): 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