@@ -60,6 +60,9 @@ async def _process_bootstrap_addr(self, addr_str: str) -> None:
60
60
return
61
61
peer_id = ID .from_base58 (peer_id_str )
62
62
addrs = [addr for addr in resolved_addrs ]
63
+ if not addrs :
64
+ logger .warning (f"No addresses resolved for DNS address: { addr_str } " )
65
+ return
63
66
peer_info = PeerInfo (peer_id , addrs )
64
67
self .add_addr (peer_info )
65
68
else :
@@ -76,16 +79,16 @@ def add_addr(self, peer_info: PeerInfo) -> None:
76
79
logger .debug (f"Skipping own peer ID: { peer_info .peer_id } " )
77
80
return
78
81
79
- # Skip if already discovered
80
- if str (peer_info .peer_id ) in self .discovered_peers :
81
- logger .debug (f"Peer already discovered: { peer_info .peer_id } " )
82
- return
83
-
84
- # Add to peerstore with TTL (using same pattern as mDNS)
82
+ # Always add addresses to peerstore (allows multiple addresses for same peer)
85
83
self .peerstore .add_addrs (peer_info .peer_id , peer_info .addrs , 10 )
86
84
87
- # Track discovered peer
88
- self .discovered_peers .add (str (peer_info .peer_id ))
89
-
90
- # Emit peer discovery event
91
- peerDiscovery .emit_peer_discovered (peer_info )
85
+ # Only emit discovery event if this is the first time we see this peer
86
+ peer_id_str = str (peer_info .peer_id )
87
+ if peer_id_str not in self .discovered_peers :
88
+ # Track discovered peer
89
+ self .discovered_peers .add (peer_id_str )
90
+ # Emit peer discovery event
91
+ peerDiscovery .emit_peer_discovered (peer_info )
92
+ logger .debug (f"Peer discovered: { peer_info .peer_id } " )
93
+ else :
94
+ logger .debug (f"Additional addresses added for peer: { peer_info .peer_id } " )
0 commit comments