// 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)
})
}
-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.
me.updateRequests("Peer.cancel")
}
}
- return me.write(makeCancelMessage(me.t.requestIndexToRequest(r)))
+ me.write(makeCancelMessage(me.t.requestIndexToRequest(r)))
}
func (cn *PeerConn) fillWriteBuffer() {
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()
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()
if ws.peer.isLowOnRequests() {
ws.peer.updateRequests("webseedPeer._cancel")
}
- return true
}
func (ws *webseedPeer) intoSpec(r Request) webseed.RequestSpec {