mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-17 17:33:47 +00:00
swarm/network: fix int overflow by converting to int64
This commit is contained in:
parent
411b9a9cdf
commit
3474bd58d5
2 changed files with 15 additions and 16 deletions
|
|
@ -58,7 +58,7 @@ type KadParams struct {
|
|||
MinProxBinSize int // nearest neighbour core minimum cardinality
|
||||
MinBinSize int // minimum number of peers in a row
|
||||
MaxBinSize int // maximum number of peers in a row before pruning
|
||||
RetryInterval int // initial interval before a peer is first redialed
|
||||
RetryInterval int64 // initial interval before a peer is first redialed
|
||||
RetryExponent int // exponent to multiply retry intervals with
|
||||
MaxRetries int // maximum number of redial attempts
|
||||
PruneInterval int // interval between peer pruning cycles
|
||||
|
|
@ -399,9 +399,9 @@ func (k *Kademlia) callable(val pot.Val) OverlayAddr {
|
|||
return nil
|
||||
}
|
||||
// calculate the allowed number of retries based on time lapsed since last seen
|
||||
timeAgo := int(time.Since(e.seenAt))
|
||||
div := k.RetryExponent
|
||||
div += (150000 - rand.Intn(300000)) * div / 1000000
|
||||
timeAgo := int64(time.Since(e.seenAt))
|
||||
div := int64(k.RetryExponent)
|
||||
div += (150000 - rand.Int63n(300000)) * div / 1000000
|
||||
var retries int
|
||||
for delta := timeAgo; delta > k.RetryInterval; delta /= div {
|
||||
retries++
|
||||
|
|
|
|||
|
|
@ -283,16 +283,15 @@ func TestSuggestPeerFindPeers(t *testing.T) {
|
|||
func TestSuggestPeerRetries(t *testing.T) {
|
||||
// 2 row gap, unsaturated proxbin, no callables -> want PO 0
|
||||
k := newTestKademlia("00000000")
|
||||
cycle := time.Second
|
||||
k.RetryInterval = int(cycle)
|
||||
k.RetryInterval = int64(time.Second) // cycle
|
||||
k.MaxRetries = 50
|
||||
k.RetryExponent = 2
|
||||
sleep := func(n int) {
|
||||
t := k.RetryInterval
|
||||
ts := k.RetryInterval
|
||||
for i := 1; i < n; i++ {
|
||||
t *= k.RetryExponent
|
||||
ts *= int64(k.RetryExponent)
|
||||
}
|
||||
time.Sleep(time.Duration(t))
|
||||
time.Sleep(time.Duration(ts))
|
||||
}
|
||||
|
||||
k.Register("01000000")
|
||||
|
|
|
|||
Loading…
Reference in a new issue