Track requests that are preserved across chokings
This commit is contained in:
parent
0a8e66c7fc
commit
3f3bcab0d8
|
@ -1057,12 +1057,20 @@ func (c *PeerConn) mainReadLoop() (err error) {
|
||||||
return errors.New("got unchoke but not choked")
|
return errors.New("got unchoke but not choked")
|
||||||
}
|
}
|
||||||
c.peerChoking = false
|
c.peerChoking = false
|
||||||
|
preservedCount := 0
|
||||||
c.actualRequestState.Requests.Iterate(func(x uint32) bool {
|
c.actualRequestState.Requests.Iterate(func(x uint32) bool {
|
||||||
if !c.peerAllowedFast.Contains(x / c.t.chunksPerRegularPiece()) {
|
if !c.peerAllowedFast.Contains(x / c.t.chunksPerRegularPiece()) {
|
||||||
|
preservedCount++
|
||||||
c.t.pendingRequests.Inc(x)
|
c.t.pendingRequests.Inc(x)
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
if preservedCount != 0 {
|
||||||
|
// TODO: Yes this is a debug log but I'm not happy with the state of the logging lib
|
||||||
|
// right now.
|
||||||
|
log.Printf("%v requests were preserved while being choked", preservedCount)
|
||||||
|
torrent.Add("requestsPreservedThroughChoking", int64(preservedCount))
|
||||||
|
}
|
||||||
c.updateRequests("unchoked")
|
c.updateRequests("unchoked")
|
||||||
c.updateExpectingChunks()
|
c.updateExpectingChunks()
|
||||||
case pp.Interested:
|
case pp.Interested:
|
||||||
|
|
Loading…
Reference in New Issue