cl/sentinel: fix DISCV5 ENR missing IP when discovery address is unspecified.#19647
Merged
lystopad merged 2 commits intorelease/3.3from Mar 5, 2026
Merged
Conversation
…ecified
When caplin.discovery.addr defaults to 0.0.0.0, the ENR ends up with no
IP because updateEndpoints() rejects unspecified addresses. This makes
the node undiscoverable via DISCV5.
Fix by detecting the preferred outbound IP via the OS routing table
(net.Dial("udp", ...) without sending traffic) when the configured
address is unspecified. Also add a nil-guard in Identity() to prevent
panic when ENR has no IP.
Cherry-pick of #19585 to release/3.3 — adapted because on this branch
the localnode setup lives in cl/sentinel/sentinel.go (createLocalNode
method) rather than in a separate cl/p2p/p2p_localnode.go file.
Fixes #19576
Co-Authored-By: Claude
AskAlexSharov
approved these changes
Mar 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Confirmed it works on sepolia node.
When caplin.discovery.addr defaults to 0.0.0.0, the ENR ends up with no IP because updateEndpoints() rejects unspecified addresses. This makes the node undiscoverable via DISCV5.
Fix by detecting the preferred outbound IP via the OS routing table (net.Dial("udp", ...) without sending traffic) when the configured address is unspecified. Also add a nil-guard in Identity() to prevent panic when ENR has no IP.
Cherry-pick of #19585 to release/3.3 — adapted because on this branch the localnode setup lives in cl/sentinel/sentinel.go (createLocalNode method) rather than in a separate cl/p2p/p2p_localnode.go file.
Fixes #19576
Co-Authored-By: Claude