Skip to content

Commit 37b5011

Browse files
committed
Add relay peers as bootstrappable peers
1 parent e2957c5 commit 37b5011

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed

client.go

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

cmd/example/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ func main() {
5555
Port: *port,
5656
PeerCacheFile: "peer_cache.json", // Enable peer persistence
5757
RelayPeers: relayPeers,
58+
DHTMode: "client",
59+
//EnableNAT: true,
5860
})
5961
if err != nil {
6062
logger.Errorf("Failed to create P2P client: %v", err)

0 commit comments

Comments
 (0)