From 4e0d8411bb5fdfe4d8da6429b9eed5e59577261c Mon Sep 17 00:00:00 2001 From: iurii Date: Tue, 21 Jan 2025 15:34:25 +0200 Subject: [PATCH 1/3] config: p2p, fix parsing of HostDNS --- network/p2p/config.go | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/network/p2p/config.go b/network/p2p/config.go index bbfb7d3ae7..9cdee08e21 100644 --- a/network/p2p/config.go +++ b/network/p2p/config.go @@ -40,8 +40,8 @@ type Config struct { TCPPort uint16 `yaml:"TcpPort" env:"TCP_PORT" env-default:"13001" env-description:"TCP port for p2p transport"` UDPPort uint16 `yaml:"UdpPort" env:"UDP_PORT" env-default:"12001" env-description:"UDP port for discovery"` - HostAddress string `yaml:"HostAddress" env:"HOST_ADDRESS" env-description:"External ip node is exposed for discovery"` - HostDNS string `yaml:"HostDNS" env:"HOST_DNS" env-description:"External DNS node is exposed for discovery"` + HostAddress string `yaml:"HostAddress" env:"HOST_ADDRESS" env-description:"External ip node is exposed for discovery, can be overridden by HostDNS"` + HostDNS string `yaml:"HostDNS" env:"HOST_DNS" env-description:"External DNS node is exposed for discovery, overrides HostAddress if both are specified"` RequestTimeout time.Duration `yaml:"RequestTimeout" env:"P2P_REQUEST_TIMEOUT" env-default:"10s"` MaxBatchResponse uint64 `yaml:"MaxBatchResponse" env:"P2P_MAX_BATCH_RESPONSE" env-default:"25" env-description:"Maximum number of returned objects in a batch"` @@ -149,24 +149,23 @@ func (c *Config) configureAddrs(logger *zap.Logger, opts []libp2p.Option) ([]lib } opts = append(opts, libp2p.ListenAddrs(addrs...)) - // AddrFactory for host address if provided - if c.HostAddress != "" { + if c.HostDNS != "" { + // AddrFactory for DNS address if provided opts = append(opts, libp2p.AddrsFactory(func(addrs []ma.Multiaddr) []ma.Multiaddr { - external, err := commons.BuildMultiAddress(c.HostAddress, "tcp", uint(c.TCPPort), "") + external, err := ma.NewMultiaddr(fmt.Sprintf("/dns4/%s/tcp/%d", c.HostDNS, c.TCPPort)) if err != nil { - logger.Error("unable to create external multiaddress", zap.Error(err)) + logger.Warn("unable to create external multiaddress", zap.Error(err)) } else { addrs = append(addrs, external) } return addrs })) - } - // AddrFactory for DNS address if provided - if c.HostDNS != "" { + } else if c.HostAddress != "" { + // AddrFactory for host address if provided opts = append(opts, libp2p.AddrsFactory(func(addrs []ma.Multiaddr) []ma.Multiaddr { - external, err := ma.NewMultiaddr(fmt.Sprintf("/dns4/%s/tcp/%d", c.HostDNS, c.TCPPort)) + external, err := commons.BuildMultiAddress(c.HostAddress, "tcp", uint(c.TCPPort), "") if err != nil { - logger.Warn("unable to create external multiaddress", zap.Error(err)) + logger.Error("unable to create external multiaddress", zap.Error(err)) } else { addrs = append(addrs, external) } From baf091824246ba28ebbb233e669338a6d8a607a3 Mon Sep 17 00:00:00 2001 From: iurii Date: Tue, 21 Jan 2025 15:36:29 +0200 Subject: [PATCH 2/3] log error as Error (not Warn) --- network/p2p/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/network/p2p/config.go b/network/p2p/config.go index 9cdee08e21..f287873b23 100644 --- a/network/p2p/config.go +++ b/network/p2p/config.go @@ -154,7 +154,7 @@ func (c *Config) configureAddrs(logger *zap.Logger, opts []libp2p.Option) ([]lib opts = append(opts, libp2p.AddrsFactory(func(addrs []ma.Multiaddr) []ma.Multiaddr { external, err := ma.NewMultiaddr(fmt.Sprintf("/dns4/%s/tcp/%d", c.HostDNS, c.TCPPort)) if err != nil { - logger.Warn("unable to create external multiaddress", zap.Error(err)) + logger.Error("unable to create external multiaddress", zap.Error(err)) } else { addrs = append(addrs, external) } From b4e8e0997e0b744dc24cb0a8b88ed22edc6116cc Mon Sep 17 00:00:00 2001 From: iurii Date: Tue, 21 Jan 2025 16:01:19 +0200 Subject: [PATCH 3/3] add clarifying note --- network/p2p/config.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/network/p2p/config.go b/network/p2p/config.go index f287873b23..74149daeba 100644 --- a/network/p2p/config.go +++ b/network/p2p/config.go @@ -149,6 +149,8 @@ func (c *Config) configureAddrs(logger *zap.Logger, opts []libp2p.Option) ([]lib } opts = append(opts, libp2p.ListenAddrs(addrs...)) + // note, only one of (HostDNS, HostAddress) can be used with libp2p - if multiple of these + // are set we have to prioritize between them. if c.HostDNS != "" { // AddrFactory for DNS address if provided opts = append(opts, libp2p.AddrsFactory(func(addrs []ma.Multiaddr) []ma.Multiaddr {