mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 23:26:44 +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) {
|
||||
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 {
|
||||
return false, err
|
||||
}
|
||||
|
|
@ -263,7 +263,7 @@ func (p *PortalProtocolAPI) AddEnr(enr string) (bool, error) {
|
|||
func (p *PortalProtocolAPI) AddEnrs(enrs []string) bool {
|
||||
// Note: unspecified RPC, but useful for our local testnet test
|
||||
for _, enr := range enrs {
|
||||
n, err := enode.Parse(enode.ValidSchemes, enr)
|
||||
n, err := enode.ParseForAddEnr(enode.ValidSchemes, enr)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
|
|
|||
|
|
@ -293,7 +293,7 @@ func (p *PortalProtocol) AddEnr(n *enode.Node) {
|
|||
defer p.table.mutex.Unlock()
|
||||
added := p.table.handleAddNode(addNodeOp{node: n, isInbound: true, forceSetLive: true})
|
||||
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
|
||||
}
|
||||
id := n.ID().String()
|
||||
|
|
|
|||
|
|
@ -149,6 +149,34 @@ func Parse(validSchemes enr.IdentityScheme, input string) (*Node, error) {
|
|||
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.
|
||||
func (n *Node) ID() ID {
|
||||
return n.id
|
||||
|
|
|
|||
Loading…
Reference in a new issue