Apply patch

This commit is contained in:
Dmitry 2018-05-30 09:08:28 +03:00
parent 328fda92e8
commit df63195f8b
4 changed files with 77 additions and 4 deletions

View File

@ -0,0 +1,64 @@
diff --git c/p2p/discv5/net.go w/p2p/discv5/net.go
index 9b0bd0c80..d0eae28f9 100644
--- c/p2p/discv5/net.go
+++ w/p2p/discv5/net.go
@@ -40,7 +40,7 @@ var (
const (
autoRefreshInterval = 1 * time.Hour
- bucketRefreshInterval = 1 * time.Minute
+ bucketRefreshInterval = 10 * time.Second
seedCount = 30
seedMaxAge = 5 * 24 * time.Hour
lowPort = 1024
@@ -1055,7 +1055,11 @@ func (net *Network) handle(n *Node, ev nodeEvent, pkt *ingressPacket) error {
func (net *Network) checkPacket(n *Node, ev nodeEvent, pkt *ingressPacket) error {
// Replay prevention checks.
switch ev {
- case pingPacket, findnodeHashPacket, neighborsPacket:
+ case pingPacket:
+ if pkt.data.(*ping).Version != Version {
+ return fmt.Errorf("version mismatch")
+ }
+ case findnodeHashPacket, neighborsPacket:
// TODO: check date is > last date seen
// TODO: check ping version
case pongPacket:
diff --git c/p2p/discv5/table.go w/p2p/discv5/table.go
index c8d234b93..42311e1db 100644
--- c/p2p/discv5/table.go
+++ w/p2p/discv5/table.go
@@ -38,7 +38,7 @@ const (
hashBits = len(common.Hash{}) * 8
nBuckets = hashBits + 1 // Number of buckets
- maxFindnodeFailures = 5
+ maxFindnodeFailures = 1
)
type Table struct {
@@ -177,6 +177,11 @@ func (tab *Table) closest(target common.Hash, nresults int) *nodesByDistance {
close := &nodesByDistance{target: target}
for _, b := range tab.buckets {
for _, n := range b.entries {
+ // node can be in table only in two states
+ // known and contested
+ if n.state != known {
+ continue
+ }
close.push(n, nresults)
}
}
diff --git c/p2p/discv5/udp.go w/p2p/discv5/udp.go
index 49e1cb811..0ead22753 100644
--- c/p2p/discv5/udp.go
+++ w/p2p/discv5/udp.go
@@ -32,7 +32,7 @@ import (
"github.com/ethereum/go-ethereum/rlp"
)
-const Version = 4
+const Version = 55
// Errors
var (

View File

@ -40,7 +40,7 @@ var (
const (
autoRefreshInterval = 1 * time.Hour
bucketRefreshInterval = 1 * time.Minute
bucketRefreshInterval = 10 * time.Second
seedCount = 30
seedMaxAge = 5 * 24 * time.Hour
lowPort = 1024
@ -1055,7 +1055,11 @@ func (net *Network) handle(n *Node, ev nodeEvent, pkt *ingressPacket) error {
func (net *Network) checkPacket(n *Node, ev nodeEvent, pkt *ingressPacket) error {
// Replay prevention checks.
switch ev {
case pingPacket, findnodeHashPacket, neighborsPacket:
case pingPacket:
if pkt.data.(*ping).Version != Version {
return fmt.Errorf("version mismatch")
}
case findnodeHashPacket, neighborsPacket:
// TODO: check date is > last date seen
// TODO: check ping version
case pongPacket:

View File

@ -38,7 +38,7 @@ const (
hashBits = len(common.Hash{}) * 8
nBuckets = hashBits + 1 // Number of buckets
maxFindnodeFailures = 5
maxFindnodeFailures = 1
)
type Table struct {
@ -177,6 +177,11 @@ func (tab *Table) closest(target common.Hash, nresults int) *nodesByDistance {
close := &nodesByDistance{target: target}
for _, b := range tab.buckets {
for _, n := range b.entries {
// node can be in table only in two states
// known and contested
if n.state != known {
continue
}
close.push(n, nresults)
}
}

View File

@ -32,7 +32,7 @@ import (
"github.com/ethereum/go-ethereum/rlp"
)
const Version = 4
const Version = 55
// Errors
var (