From: Matt Joiner Date: Sat, 14 Nov 2020 11:53:55 +0000 (+1100) Subject: Mark piece complete without Client lock X-Git-Tag: v1.19.0~23 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=6cceb5749d8b03df21900dbeefff91402711ffef;p=btrtrc.git Mark piece complete without Client lock --- 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 {