From: Matt Joiner Date: Thu, 28 Jan 2021 03:26:10 +0000 (+1100) Subject: Don't cancel request on current peer when receiving chunk X-Git-Tag: v1.22.0~7 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=47d6282e54c7df66f4ef9bc765e69d6db8e43acd;p=btrtrc.git Don't cancel request on current peer when receiving chunk --- 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()