diff --git a/waku/factory/waku.nim b/waku/factory/waku.nim index d55206f97..21dd9f3a1 100644 --- a/waku/factory/waku.nim +++ b/waku/factory/waku.nim @@ -186,6 +186,9 @@ proc new*( error "Failed setting up node", error = $error return err("Failed setting up node: " & $error) + # Set the extMultiAddrsOnly flag so the node knows not to replace explicit addresses + node.extMultiAddrsOnly = wakuConf.endpointConf.extMultiAddrsOnly + healthMonitor.setNodeToHealthMonitor(node) healthMonitor.onlineMonitor.setPeerStoreToOnlineMonitor(node.switch.peerStore) healthMonitor.onlineMonitor.addOnlineStateObserver( diff --git a/waku/node/waku_node.nim b/waku/node/waku_node.nim index 07e36dd13..3c44b6b25 100644 --- a/waku/node/waku_node.nim +++ b/waku/node/waku_node.nim @@ -126,6 +126,7 @@ type wakuRendezvous*: WakuRendezVous wakuRendezvousClient*: rendezvous_client.WakuRendezVousClient announcedAddresses*: seq[MultiAddress] + extMultiAddrsOnly*: bool # When true, skip automatic IP address replacement started*: bool # Indicates that node has started listening topicSubscriptionQueue*: AsyncEventQueue[SubscriptionEvent] rateLimitSettings*: ProtocolRateLimitSettings @@ -403,6 +404,11 @@ proc isBindIpWithZeroPort(inputMultiAdd: MultiAddress): bool = return false proc updateAnnouncedAddrWithPrimaryIpAddr*(node: WakuNode): Result[void, string] = + # Skip automatic IP replacement if extMultiAddrsOnly is set + # This respects the user's explicitly configured announced addresses + if node.extMultiAddrsOnly: + return ok() + let peerInfo = node.switch.peerInfo var announcedStr = "" var listenStr = ""