diff --git a/swarm/network/kademlia.go b/swarm/network/kademlia.go index d7bb7be6d7..aa13923379 100644 --- a/swarm/network/kademlia.go +++ b/swarm/network/kademlia.go @@ -54,14 +54,14 @@ var pof = pot.DefaultPof(256) // KadParams holds the config params for Kademlia type KadParams struct { // adjustable parameters - MaxProxDisplay int // number of rows the table shows - 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 - RetryExponent int // exponent to multiply retry intervals with - MaxRetries int // maximum number of redial attempts - PruneInterval int // interval between peer pruning cycles + MaxProxDisplay int // number of rows the table shows + 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 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 // function to sanction or prevent suggesting a peer Reachable func(OverlayAddr) bool } @@ -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++ diff --git a/swarm/network/kademlia_test.go b/swarm/network/kademlia_test.go index 01ed72c582..9d9ddbc934 100644 --- a/swarm/network/kademlia_test.go +++ b/swarm/network/kademlia_test.go @@ -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")