@@ -89,8 +89,18 @@ func NewClient(config Config) (Client, error) {
8989 // Get bootstrap peers from DHT library for DHT bootstrapping
9090 bootstrapPeers := dht .GetDefaultBootstrapPeerAddrInfos ()
9191
92- // Determine which peers to use as relays
93- relayPeers := configureRelayPeers (config .RelayPeers , bootstrapPeers , clientLogger )
92+ // Parse custom relay peers if provided
93+ customRelayPeers := parseRelayPeersFromConfig (config .RelayPeers , clientLogger )
94+
95+ // Add custom relay peers to bootstrap list for better peer discovery
96+ // This helps the DHT routing table include your known-good relay peers
97+ if len (customRelayPeers ) > 0 {
98+ bootstrapPeers = append (bootstrapPeers , customRelayPeers ... )
99+ clientLogger .Infof ("Added %d custom relay peers to bootstrap peer list" , len (customRelayPeers ))
100+ }
101+
102+ // Determine which peers to use as relays (relay peers OR bootstrap peers as fallback)
103+ relayPeers := selectRelayPeers (customRelayPeers , bootstrapPeers , clientLogger )
94104
95105 // Create and setup libp2p host
96106 h , err := createHost (ctx , hostOpts , config , relayPeers , clientLogger , cancel )
@@ -333,10 +343,10 @@ func setupDHT(ctx context.Context, h host.Host, config Config, bootstrapPeers []
333343 return kadDHT , nil
334344}
335345
336- func configureRelayPeers (relayPeersConfig []string , bootstrapPeers []peer.AddrInfo , log logger ) []peer.AddrInfo {
346+ // parseRelayPeersFromConfig parses relay peer multiaddr strings into AddrInfo
347+ func parseRelayPeersFromConfig (relayPeersConfig []string , log logger ) []peer.AddrInfo {
337348 if len (relayPeersConfig ) == 0 {
338- log .Infof ("Using bootstrap peers as relays" )
339- return bootstrapPeers
349+ return nil
340350 }
341351
342352 relayPeers := make ([]peer.AddrInfo , 0 , len (relayPeersConfig ))
@@ -354,12 +364,17 @@ func configureRelayPeers(relayPeersConfig []string, bootstrapPeers []peer.AddrIn
354364 relayPeers = append (relayPeers , * addrInfo )
355365 }
356366
357- if len (relayPeers ) > 0 {
358- log .Infof ("Using %d custom relay peer(s)" , len (relayPeers ))
359- return relayPeers
367+ return relayPeers
368+ }
369+
370+ // selectRelayPeers determines which peers to use as relays
371+ func selectRelayPeers (customRelayPeers []peer.AddrInfo , bootstrapPeers []peer.AddrInfo , log logger ) []peer.AddrInfo {
372+ if len (customRelayPeers ) > 0 {
373+ log .Infof ("Using %d custom relay peer(s)" , len (customRelayPeers ))
374+ return customRelayPeers
360375 }
361376
362- log .Warnf ( "No valid custom relay peers found, falling back to bootstrap peers as relays" )
377+ log .Infof ( "Using bootstrap peers as relays" )
363378 return bootstrapPeers
364379}
365380
0 commit comments