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
|
|
@ -54,14 +54,14 @@ var pof = pot.DefaultPof(256)
|
||||||
// KadParams holds the config params for Kademlia
|
// KadParams holds the config params for Kademlia
|
||||||
type KadParams struct {
|
type KadParams struct {
|
||||||
// adjustable parameters
|
// adjustable parameters
|
||||||
MaxProxDisplay int // number of rows the table shows
|
MaxProxDisplay int // number of rows the table shows
|
||||||
MinProxBinSize int // nearest neighbour core minimum cardinality
|
MinProxBinSize int // nearest neighbour core minimum cardinality
|
||||||
MinBinSize int // minimum number of peers in a row
|
MinBinSize int // minimum number of peers in a row
|
||||||
MaxBinSize int // maximum number of peers in a row before pruning
|
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
|
RetryExponent int // exponent to multiply retry intervals with
|
||||||
MaxRetries int // maximum number of redial attempts
|
MaxRetries int // maximum number of redial attempts
|
||||||
PruneInterval int // interval between peer pruning cycles
|
PruneInterval int // interval between peer pruning cycles
|
||||||
// function to sanction or prevent suggesting a peer
|
// function to sanction or prevent suggesting a peer
|
||||||
Reachable func(OverlayAddr) bool
|
Reachable func(OverlayAddr) bool
|
||||||
}
|
}
|
||||||
|
|
@ -399,9 +399,9 @@ func (k *Kademlia) callable(val pot.Val) OverlayAddr {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
// calculate the allowed number of retries based on time lapsed since last seen
|
// calculate the allowed number of retries based on time lapsed since last seen
|
||||||
timeAgo := int(time.Since(e.seenAt))
|
timeAgo := int64(time.Since(e.seenAt))
|
||||||
div := k.RetryExponent
|
div := int64(k.RetryExponent)
|
||||||
div += (150000 - rand.Intn(300000)) * div / 1000000
|
div += (150000 - rand.Int63n(300000)) * div / 1000000
|
||||||
var retries int
|
var retries int
|
||||||
for delta := timeAgo; delta > k.RetryInterval; delta /= div {
|
for delta := timeAgo; delta > k.RetryInterval; delta /= div {
|
||||||
retries++
|
retries++
|
||||||
|
|
|
||||||
|
|
@ -283,16 +283,15 @@ func TestSuggestPeerFindPeers(t *testing.T) {
|
||||||
func TestSuggestPeerRetries(t *testing.T) {
|
func TestSuggestPeerRetries(t *testing.T) {
|
||||||
// 2 row gap, unsaturated proxbin, no callables -> want PO 0
|
// 2 row gap, unsaturated proxbin, no callables -> want PO 0
|
||||||
k := newTestKademlia("00000000")
|
k := newTestKademlia("00000000")
|
||||||
cycle := time.Second
|
k.RetryInterval = int64(time.Second) // cycle
|
||||||
k.RetryInterval = int(cycle)
|
|
||||||
k.MaxRetries = 50
|
k.MaxRetries = 50
|
||||||
k.RetryExponent = 2
|
k.RetryExponent = 2
|
||||||
sleep := func(n int) {
|
sleep := func(n int) {
|
||||||
t := k.RetryInterval
|
ts := k.RetryInterval
|
||||||
for i := 1; i < n; i++ {
|
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")
|
k.Register("01000000")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue