]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Assert that a request isn't cancelled before requesting it again
authorMatt Joiner <anacrolix@gmail.com>
Mon, 13 Dec 2021 00:56:57 +0000 (11:56 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Mon, 13 Dec 2021 00:56:57 +0000 (11:56 +1100)
peerconn.go

index 098d93fc46a6ba8f59833eaa9dfbce07200ae6e9..4ec0944ba7090f3a9ede320a3873488e0610728e 100644 (file)
@@ -570,6 +570,9 @@ type messageWriter func(pp.Message) bool
 // when we want to go fast.
 func (cn *Peer) shouldRequest(r RequestIndex) error {
        pi := pieceIndex(r / cn.t.chunksPerRegularPiece())
+       if cn.requestState.Cancelled.Contains(r) {
+               return errors.New("request is cancelled and waiting acknowledgement")
+       }
        if !cn.peerHasPiece(pi) {
                return errors.New("requesting piece peer doesn't have")
        }