mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-10 22:13:47 +00:00
No longer check if the IP is a multicast address when call AddEnr
This commit is contained in:
parent
5e49d18f43
commit
d9ac99649f
3 changed files with 31 additions and 3 deletions
|
|
@ -252,7 +252,7 @@ func (p *PortalProtocolAPI) RoutingTableInfo() *RoutingTableInfo {
|
||||||
|
|
||||||
func (p *PortalProtocolAPI) AddEnr(enr string) (bool, error) {
|
func (p *PortalProtocolAPI) AddEnr(enr string) (bool, error) {
|
||||||
p.portalProtocol.Log.Debug("serving AddEnr", "enr", enr)
|
p.portalProtocol.Log.Debug("serving AddEnr", "enr", enr)
|
||||||
n, err := enode.Parse(enode.ValidSchemes, enr)
|
n, err := enode.ParseForAddEnr(enode.ValidSchemes, enr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
@ -263,7 +263,7 @@ func (p *PortalProtocolAPI) AddEnr(enr string) (bool, error) {
|
||||||
func (p *PortalProtocolAPI) AddEnrs(enrs []string) bool {
|
func (p *PortalProtocolAPI) AddEnrs(enrs []string) bool {
|
||||||
// Note: unspecified RPC, but useful for our local testnet test
|
// Note: unspecified RPC, but useful for our local testnet test
|
||||||
for _, enr := range enrs {
|
for _, enr := range enrs {
|
||||||
n, err := enode.Parse(enode.ValidSchemes, enr)
|
n, err := enode.ParseForAddEnr(enode.ValidSchemes, enr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -293,7 +293,7 @@ func (p *PortalProtocol) AddEnr(n *enode.Node) {
|
||||||
defer p.table.mutex.Unlock()
|
defer p.table.mutex.Unlock()
|
||||||
added := p.table.handleAddNode(addNodeOp{node: n, isInbound: true, forceSetLive: true})
|
added := p.table.handleAddNode(addNodeOp{node: n, isInbound: true, forceSetLive: true})
|
||||||
if !added {
|
if !added {
|
||||||
p.Log.Warn("add node failed", "id", n.ID(), n.IPAddr())
|
p.Log.Warn("add node failed", "id", n.ID(), "ip", n.IPAddr())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
id := n.ID().String()
|
id := n.ID().String()
|
||||||
|
|
|
||||||
|
|
@ -149,6 +149,34 @@ func Parse(validSchemes enr.IdentityScheme, input string) (*Node, error) {
|
||||||
return New(validSchemes, &r)
|
return New(validSchemes, &r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ParseForAddEnr(validSchemes enr.IdentityScheme, input string) (*Node, error) {
|
||||||
|
if strings.HasPrefix(input, "enode://") {
|
||||||
|
return ParseV4(input)
|
||||||
|
}
|
||||||
|
if !strings.HasPrefix(input, "enr:") {
|
||||||
|
return nil, errMissingPrefix
|
||||||
|
}
|
||||||
|
bin, err := base64.RawURLEncoding.DecodeString(input[4:])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var r enr.Record
|
||||||
|
if err := rlp.DecodeBytes(bin, &r); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var n *Node
|
||||||
|
if n, err = New(validSchemes, &r); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var ip4 netip.Addr
|
||||||
|
var ip6 netip.Addr
|
||||||
|
n.Load((*enr.IPv4Addr)(&ip4))
|
||||||
|
n.Load((*enr.IPv6Addr)(&ip6))
|
||||||
|
n.setIP4(ip4)
|
||||||
|
n.setIP6(ip6)
|
||||||
|
return n, nil
|
||||||
|
}
|
||||||
|
|
||||||
// ID returns the node identifier.
|
// ID returns the node identifier.
|
||||||
func (n *Node) ID() ID {
|
func (n *Node) ID() ID {
|
||||||
return n.id
|
return n.id
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue