client.go | 4 +++- peerconn.go | 2 +- requesting.go | 9 +++++++-- diff --git a/client.go b/client.go index b498339ec5268779d53024126cb99b56a89797b9..71f37e3cde8d2c91ad06c752e568033fc433c63c 100644 --- a/client.go +++ b/client.go @@ -991,7 +991,9 @@ if p.updateRequestsTimer != nil { panic(p.updateRequestsTimer) } } - p.updateRequestsTimer = time.AfterFunc(math.MaxInt64, p.updateRequestsTimerFunc) + if enableUpdateRequestsTimer { + p.updateRequestsTimer = time.AfterFunc(math.MaxInt64, p.updateRequestsTimerFunc) + } } const peerUpdateRequestsTimerReason = "updateRequestsTimer" diff --git a/peerconn.go b/peerconn.go index 0b2d85f650c11a31f3370c80ae24039d85df7edd..554da65f2eb844279c14213825c8f67eb038078c 100644 --- a/peerconn.go +++ b/peerconn.go @@ -503,7 +503,7 @@ ) // The actual value to use as the maximum outbound requests. func (cn *Peer) nominalMaxRequests() maxRequests { - return maxRequests(maxInt(1, minInt(cn.PeerMaxRequests, cn.peakRequests*2, maxLocalToRemoteRequests))) + return maxInt(1, minInt(cn.PeerMaxRequests, cn.peakRequests*2, maxLocalToRemoteRequests)) } func (cn *Peer) totalExpectingTime() (ret time.Duration) { diff --git a/requesting.go b/requesting.go index 98e9e88bf34048a6ae8ec6ddaaaefd49c8a9dc02..f1831346e816cc2508d96e8e3b79ff055ac31cbd 100644 --- a/requesting.go +++ b/requesting.go @@ -312,9 +312,14 @@ // originalRequestCount, current.Requests.GetCardinality(), p.peakRequests, newPeakRequests, p.needRequestUpdate, p) p.peakRequests = newPeakRequests p.needRequestUpdate = "" p.lastRequestUpdate = time.Now() - p.updateRequestsTimer.Reset(updateRequestsTimerDuration) + if enableUpdateRequestsTimer { + p.updateRequestsTimer.Reset(updateRequestsTimerDuration) + } } // This could be set to 10s to match the unchoke/request update interval recommended by some // specifications. I've set it shorter to trigger it more often for testing for now. -const updateRequestsTimerDuration = 3 * time.Second +const ( + updateRequestsTimerDuration = 3 * time.Second + enableUpdateRequestsTimer = false +)