From 57164d4d8c980e50eac5940bbad5348ffbc8db65 Mon Sep 17 00:00:00 2001 From: smin-k Date: Wed, 8 May 2024 20:55:05 +0900 Subject: [PATCH] p2p/enode: fix ipv6 address used as extip results in 127.0.0.1 being used --- p2p/enode/node.go | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/p2p/enode/node.go b/p2p/enode/node.go index d7a1a9a156..26caa4ab1a 100644 --- a/p2p/enode/node.go +++ b/p2p/enode/node.go @@ -101,19 +101,26 @@ func (n *Node) Load(k enr.Entry) error { // IP returns the IP address of the node. This prefers IPv4 addresses. func (n *Node) IP() net.IP { - var ( - ip4 enr.IPv4 - ip6 enr.IPv6 - ) - if n.Load(&ip4) == nil { - return net.IP(ip4) - } - if n.Load(&ip6) == nil { - return net.IP(ip6) - } - return nil + var ( + ip4 enr.IPv4 + ip6 enr.IPv6 + ) + if n.Load(&ip4) == nil { + ipv4Addr := net.IP(ip4) + if !ipv4Addr.IsLoopback() { + return ipv4Addr + } + } + 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. func (n *Node) UDP() int { var port enr.UDP