Replies: 1 comment
|
Confirmed against master (c291e79) — your report matches the source line for line, and the patch direction is right:
Semantics I'd suggest: treat ENOTFOUND/ENODATA as "no DNS64 present → empty prefix set" and rethrow anything else. And please add a resolver-injected test for the no-DNS64 case — the hook already exists for tests ( |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Summary
web_fetchthrough the local HTTP provider (@deepseek-ai/dsh-web-fetch-http) fails for every URL whose host has an IPv6 address when the network's DNS does not resolveipv4only.arpa. The RFC 7050 NAT64 discovery lookup lets the resolver'sENOTFOUNDpropagate, so an optional probe turns into a hard failure of the whole fetch. On such networks web fetching is effectively unusable for dual-stack sites.Reproduction
ipv4only.arpa(check:getent ahosts ipv4only.arpaexits with status 2). This is common on networks without DNS64.fetchProvider: http.web_fetchany URL on a host that has AAAA records, for examplehttps://store.bblcdn.eu/.The same failure reproduces without the UI by constructing
HttpFetchProviderfrom the package and callingfetch({ url }).Current behavior
The fetch fails with
WEB_PROVIDER_ERROR("web fetch failed: …"), with theENOTFOUNDerror foripv4only.arpaas the cause.resolvePublicAddressescallsdiscoverNat64Prefixeswhenever the target resolves to at least one IPv6 address, anddiscoverNat64Prefixesdoes not handle a rejected lookup:Expected behavior
If
ipv4only.arpadoes not resolve, there is no DNS64/NAT64 prefix to discover. Discovery should return an empty list, and the fetch should continue with the normal public-address checks. Other resolver errors (timeouts,SERVFAIL, abort) can still propagate.Suggested fix, which we run locally against the published build and which restores fetching on the affected network:
This only treats "the name does not exist / has no data" as "no NAT64". It does not relax the SSRF address checks.
Environment
@deepseek-ai/dshand@deepseek-ai/dsh-web-fetch-http0.1.5-rc.2 (npm). The same code is onmasteras of 2026-09-14.fetchProvider: http, no HTTP(S) proxy configured.ipv4only.arpa; IPv6 is available.All reactions