From 47ef8d9c2d417ac5911b4b8b57de3d654159b083 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Mon, 13 Dec 2021 11:56:57 +1100 Subject: [PATCH] Assert that a request isn't cancelled before requesting it again --- peerconn.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/peerconn.go b/peerconn.go index 098d93fc..4ec0944b 100644 --- a/peerconn.go +++ b/peerconn.go @@ -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") } -- 2.48.1