peer-impl.go | 3 +-- peerconn.go | 18 +++++++++--------- webseed-peer.go | 3 +-- diff --git a/peer-impl.go b/peer-impl.go index f7140377388125fb073a3ae3a55359855b7ae8a6..d400d9a4c9790b9b35d72234bf19bf0e5c7adfd2 100644 --- a/peer-impl.go +++ b/peer-impl.go @@ -17,9 +17,8 @@ writeInterested(interested bool) bool // Neither of these return buffer room anymore, because they're currently both posted. There's // also PeerConn.writeBufferFull for when/where it matters. - _cancel(RequestIndex) bool + _cancel(RequestIndex) _request(Request) bool - connectionFlags() string onClose() onGotInfo(*metainfo.Info) diff --git a/peerconn.go b/peerconn.go index 0eec60370bfc2713a8644af2a067f75db47cb032..4f43d50d3e444e9c61d67000947abf106e039c5a 100644 --- a/peerconn.go +++ b/peerconn.go @@ -638,17 +638,17 @@ Length: r.Length, }) } -func (me *Peer) cancel(r RequestIndex) bool { +func (me *Peer) cancel(r RequestIndex) { if !me.actualRequestState.Requests.Contains(r) { - return true + panic(r) } - return me._cancel(r) + me._cancel(r) } -func (me *PeerConn) _cancel(r RequestIndex) bool { +func (me *PeerConn) _cancel(r RequestIndex) { if me.cancelledRequests.Contains(r) { // Already cancelled and waiting for a response. - return true + panic(r) } // Transmission does not send rejects for received cancels. See // https://github.com/transmission/transmission/pull/2275. @@ -662,7 +662,7 @@ if me.isLowOnRequests() { me.updateRequests("Peer.cancel") } } - return me.write(makeCancelMessage(me.t.requestIndexToRequest(r))) + me.write(makeCancelMessage(me.t.requestIndexToRequest(r))) } func (cn *PeerConn) fillWriteBuffer() { @@ -1395,12 +1395,12 @@ // waiting for it to be written to storage. piece.unpendChunkIndex(chunkIndexFromChunkSpec(ppReq.ChunkSpec, t.chunkSize)) // Cancel pending requests for this chunk from *other* peers. - t.iterPeers(func(p *Peer) { + if p := t.pendingRequests[req]; p != nil { if p == c { - return + panic("should not be pending request from conn that just received it") } p.cancel(req) - }) + } err := func() error { cl.unlock() diff --git a/webseed-peer.go b/webseed-peer.go index 85e121194d28c22c6d3180a6d8a45cd79d7a1c80..0cf6c7daa364e560db79a5ddb65da2d35f6ec7c7 100644 --- a/webseed-peer.go +++ b/webseed-peer.go @@ -48,7 +48,7 @@ func (ws *webseedPeer) writeInterested(interested bool) bool { return true } -func (ws *webseedPeer) _cancel(r RequestIndex) bool { +func (ws *webseedPeer) _cancel(r RequestIndex) { active, ok := ws.activeRequests[ws.peer.t.requestIndexToRequest(r)] if ok { active.Cancel() @@ -59,7 +59,6 @@ } if ws.peer.isLowOnRequests() { ws.peer.updateRequests("webseedPeer._cancel") } - return true } func (ws *webseedPeer) intoSpec(r Request) webseed.RequestSpec {