p2p/enode: fix ipv6 address used as extip results in 127.0.0.1 being used

This commit is contained in:
smin-k 2024-05-08 20:55:05 +09:00
parent 6154f87c33
commit 57164d4d8c

View file

@ -101,19 +101,26 @@ func (n *Node) Load(k enr.Entry) error {
// IP returns the IP address of the node. This prefers IPv4 addresses. // IP returns the IP address of the node. This prefers IPv4 addresses.
func (n *Node) IP() net.IP { func (n *Node) IP() net.IP {
var ( var (
ip4 enr.IPv4 ip4 enr.IPv4
ip6 enr.IPv6 ip6 enr.IPv6
) )
if n.Load(&ip4) == nil { if n.Load(&ip4) == nil {
return net.IP(ip4) ipv4Addr := net.IP(ip4)
} if !ipv4Addr.IsLoopback() {
if n.Load(&ip6) == nil { return ipv4Addr
return net.IP(ip6) }
} }
return nil if n.Load(&ip6) == nil {
return net.IP(ip6)
}
if net.IP(ip4).IsLoopback() {
return net.IP(ip4)
}
return nil
} }
// UDP returns the UDP port of the node. // UDP returns the UDP port of the node.
func (n *Node) UDP() int { func (n *Node) UDP() int {
var port enr.UDP var port enr.UDP