diff --git a/torrent.go b/torrent.go index 38c92ee9..9e980abe 100644 --- a/torrent.go +++ b/torrent.go @@ -1748,10 +1748,16 @@ func (t *Torrent) pieceHashed(piece pieceIndex, passed bool, hashIoErr error) { c._stats.incrementPiecesDirtiedGood() } t.clearPieceTouchers(piece) + t.cl.unlock() err := p.Storage().MarkComplete() if err != nil { t.logger.Printf("%T: error marking piece complete %d: %s", t.storage, piece, err) } + t.cl.lock() + + if t.closed.IsSet() { + return + } t.pendAllChunkSpecs(piece) } else { if len(p.dirtiers) != 0 && p.allChunksDirty() && hashIoErr == nil {