aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--p2p/discover/node.go4
-rw-r--r--p2p/discover/table.go8
-rw-r--r--p2p/discover/udp.go4
3 files changed, 9 insertions, 7 deletions
diff --git a/p2p/discover/node.go b/p2p/discover/node.go
index a49a2f547..c6d2e9766 100644
--- a/p2p/discover/node.go
+++ b/p2p/discover/node.go
@@ -18,6 +18,8 @@ import (
"github.com/ethereum/go-ethereum/rlp"
)
+const nodeIDBits = 512
+
// Node represents a host on the network.
type Node struct {
ID NodeID
@@ -135,7 +137,7 @@ func (n *Node) DecodeRLP(s *rlp.Stream) (err error) {
// NodeID is a unique identifier for each node.
// The node identifier is a marshaled elliptic curve public key.
-type NodeID [512 / 8]byte
+type NodeID [nodeIDBits / 8]byte
// NodeID prints as a long hexadecimal number.
func (n NodeID) String() string {
diff --git a/p2p/discover/table.go b/p2p/discover/table.go
index 1ff2c90d9..e3bec9328 100644
--- a/p2p/discover/table.go
+++ b/p2p/discover/table.go
@@ -14,9 +14,9 @@ import (
)
const (
- alpha = 3 // Kademlia concurrency factor
- bucketSize = 16 // Kademlia bucket size
- nBuckets = len(NodeID{})*8 + 1 // Number of buckets
+ alpha = 3 // Kademlia concurrency factor
+ bucketSize = 16 // Kademlia bucket size
+ nBuckets = nodeIDBits + 1 // Number of buckets
)
type Table struct {
@@ -100,7 +100,7 @@ func (tab *Table) Lookup(target NodeID) []*Node {
tab.mutex.Unlock()
for {
- // ask the closest nodes that we haven't asked yet
+ // ask the alpha closest nodes that we haven't asked yet
for i := 0; i < len(result.entries) && pendingQueries < alpha; i++ {
n := result.entries[i]
if !asked[n.ID] {
diff --git a/p2p/discover/udp.go b/p2p/discover/udp.go
index 4ad5d9cc4..1f91641f3 100644
--- a/p2p/discover/udp.go
+++ b/p2p/discover/udp.go
@@ -28,7 +28,7 @@ var (
const (
respTimeout = 300 * time.Millisecond
sendTimeout = 300 * time.Millisecond
- expiration = 3 * time.Second
+ expiration = 20 * time.Second
refreshInterval = 1 * time.Hour
)
@@ -185,7 +185,7 @@ func (t *udp) findnode(to *Node, target NodeID) ([]*Node, error) {
nodes = append(nodes, n)
}
}
- return nreceived == bucketSize
+ return nreceived >= bucketSize
})
t.send(to, findnodePacket, findnode{