Fix bootstrap socket watcher exhaustion - #213
Open
szybnev wants to merge 1 commit into
Open
Conversation
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.
Bootstrap DNS resolution can terminate the proxy with:
dns_poller_init()allocates one libev watcher per configured nameserver. The socket-state callback exits when c-ares needs another watcher, even though the nameserver count is not a bound on simultaneous sockets. Related report: #205. This PR addresses that fatal allocation limit, not the separate WAN recovery behavior in #207.Allocate individually owned watcher nodes on demand and reuse inactive nodes. Their addresses stay stable while registered with libev; growing a contiguous array with
realloc()would invalidate those pointers. Stop and free all nodes during poller cleanup. Allocation failure remains fatal.Only bootstrap watcher bookkeeping changes at runtime. This does not alter DNS provider selection, TLS verification, HTTP socket handling, routing, or OpenWrt configuration.
Verification
Run the new regression independently with:
It is also registered with CTest as
dns_poller_watchers.