]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Record connection dirtied piece before queuing for hash
authorMatt Joiner <anacrolix@gmail.com>
Thu, 23 Jan 2020 02:52:17 +0000 (13:52 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 23 Jan 2020 02:52:17 +0000 (13:52 +1100)
Not a bug, but probably more robust.

connection.go

index 3a857d91e123808a750e09c24c15fd068d0cee08..76c15d3262fd60bed6f626e04719b9b4f5360c5e 100644 (file)
@@ -1400,13 +1400,13 @@ func (c *connection) receiveChunk(msg *pp.Message) error {
                return nil
        }
 
+       c.onDirtiedPiece(pieceIndex(req.Index))
+
        if t.pieceAllDirty(pieceIndex(req.Index)) {
                t.queuePieceCheck(pieceIndex(req.Index))
                t.pendAllChunkSpecs(pieceIndex(req.Index))
        }
 
-       c.onDirtiedPiece(pieceIndex(req.Index))
-
        cl.event.Broadcast()
        // We do this because we've written a chunk, and may change PieceState.Partial.
        t.publishPieceChange(pieceIndex(req.Index))