fix(executors): DuckDuckGo ERR_BN_LIMIT without blind retry + proxy pool support - #12110
Merged
diegosouzapw merged 2 commits intoAug 30, 2026
Merged
Conversation
diegosouzapw
merged commit Aug 30, 2026
55f6b98
into
diegosouzapw:release/v3.8.51
10 of 16 checks passed
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…ool support (diegosouzapw#12110) Corrige ERR_BN_LIMIT do DuckDuckGo sem retry cego, com suporte a pool de proxy e teste próprio (199 linhas). Validado no worktree combinado. Obrigado!
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.
What
Two fixes for the DuckDuckGo AI Chat provider:
1.
ERR_BN_LIMIT(418) — no blind retryWhen the chat endpoint returns
418with anERR_BN_LIMITerror type (DuckDuckGo rate-limit/ban on the current IP/anonymous session), the executor now returns the error immediately instead of burning another VQD acquisition on a retry that cannot succeed. The wasted retry only counts further against the IP's rate limit.418 ERR_CHALLENGE(unsolved/expired challenge) keeps the existing one-retry-with-fresh-VQD behavior unchanged.2. Proxy pool / session pool support
Added
poolConfigto theduckduckgo-webregistry entry so the provider participates in the session-pool system (fingerprint rotation + cooldown/success reporting), matching the executor's own pool settings. Combined with a per-connection/provider/global proxy assignment — which already flows throughrunWithProxyContextaround every chat execution — a DuckDuckGo connection can now be routed through a proxy pool, rotating egress IPs to work aroundERR_BN_LIMITat the source.Why
Reported error:
The old code retried once on any 418, which is wasteful for a hard rate-limit ban. And the provider had no session-pool declaration, so it could not be assigned to a proxy pool.
Tests
New
tests/unit/duckduckgo-bn-limit-418.test.ts(2 tests):ERR_BN_LIMIT→ returns 418 immediately, exactly 1 call to STATUS_URL (no retry)ERR_CHALLENGE→ retries once with fresh VQD, exactly 2 calls to STATUS_URLExisting DuckDuckGo suites (VQD 429 misclassification, web executor, challenge solver regression, domain consistency, model catalog) all still pass.