torrent.go | 14 +++++++------- diff --git a/torrent.go b/torrent.go index a70bbd7df1869998b742fddbef606a452e6f867c..688ca3f80d8a5a241eb59b3a0efc583da1e9b59f 100644 --- a/torrent.go +++ b/torrent.go @@ -2155,13 +2155,6 @@ func (t *Torrent) pieceHasher(index pieceIndex) { p := t.piece(index) sum, failedPeers, copyErr := t.hashPiece(index) correct := sum == *p.hash - if correct { - for peer := range failedPeers { - t.cl.banPeerIP(peer.AsSlice()) - log.Printf("smart banned %v for piece %v", peer, index) - } - t.dropBannedPeers() - } switch copyErr { case nil, io.EOF: default: @@ -2170,6 +2163,13 @@ } t.storageLock.RUnlock() t.cl.lock() defer t.cl.unlock() + if correct { + for peer := range failedPeers { + t.cl.banPeerIP(peer.AsSlice()) + log.Printf("smart banned %v for piece %v", peer, index) + } + t.dropBannedPeers() + } p.hashing = false t.pieceHashed(index, correct, copyErr) t.updatePiecePriority(index, "Torrent.pieceHasher")