From 47d6282e54c7df66f4ef9bc765e69d6db8e43acd Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Thu, 28 Jan 2021 14:26:10 +1100 Subject: [PATCH] Don't cancel request on current peer when receiving chunk --- peerconn.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/peerconn.go b/peerconn.go index ac43e8d5..b994f3be 100644 --- a/peerconn.go +++ b/peerconn.go @@ -1403,10 +1403,13 @@ func (c *Peer) receiveChunk(msg *pp.Message) error { // waiting for it to be written to storage. piece.unpendChunkIndex(chunkIndex(req.ChunkSpec, t.chunkSize)) - // Cancel pending requests for this chunk. - for c := range t.conns { - c.postCancel(req) - } + // Cancel pending requests for this chunk from *other* peers. + t.iterPeers(func(p *Peer) { + if p == c { + return + } + p.postCancel(req) + }) err := func() error { cl.unlock() -- 2.48.1