mirror of
https://github.com/hickory-dns/hickory-dns.git
synced 2026-04-25 03:05:51 +03:00
[PR #2502] [MERGED] Propagate NX domain and no record found errors #3094
Labels
No labels
blocked
breaking-change
bug
bug:critical
bug:tests
cleanup
compliance
compliance
compliance
crate:all
crate:client
crate:native-tls
crate:proto
crate:recursor
crate:resolver
crate:resolver
crate:rustls
crate:server
crate:util
dependencies
docs
duplicate
easy
easy
enhance
enhance
enhance
feature:dns-over-https
feature:dns-over-quic
feature:dns-over-tls
feature:dnsssec
feature:global_lb
feature:mdns
feature:tsig
features:edns
has workaround
ops
perf
platform:WASM
platform:android
platform:fuchsia
platform:linux
platform:macos
platform:windows
pull-request
question
test
tools
tools
trust
unclear
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/hickory-dns#3094
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/hickory-dns/hickory-dns/pull/2502
Author: @marcus0x62
Created: 10/8/2024
Status: ✅ Merged
Merged: 10/19/2024
Merged by: @marcus0x62
Base:
main← Head:forward_nxdomain_fix📝 Commits (6)
b787a39Preserve authority records when translating between error types5ada206Preserve authority records in forwarded responses from the catalog4ccccaaPreserve authority records in the recursor DNSSEC dns handleaa7f609Process error messages in the dnssec response handlereeecf0bResponse code coverage tests35a97a4Existing test updates📊 Changes
17 files changed (+593 additions, -87 deletions)
View changed files
📝
conformance/packages/conformance-tests/src/resolver/dns/scenarios.rs(+0 -1)📝
conformance/packages/conformance-tests/src/resolver/nsec.rs(+0 -4)📝
crates/proto/src/error.rs(+69 -6)📝
crates/proto/src/xfer/dnssec_dns_handle/mod.rs(+28 -1)📝
crates/recursor/src/error.rs(+80 -16)📝
crates/recursor/src/recursor.rs(+79 -17)📝
crates/recursor/src/recursor_dns_handle.rs(+4 -4)📝
crates/resolver/src/caching_client.rs(+8 -3)📝
crates/resolver/src/dns_lru.rs(+4 -0)📝
crates/resolver/src/error.rs(+19 -1)📝
crates/server/src/authority/auth_lookup.rs(+22 -0)📝
crates/server/src/authority/catalog.rs(+111 -31)📝
crates/server/src/authority/error.rs(+25 -2)📝
tests/e2e-tests/src/recursor.rs(+1 -0)➕
tests/e2e-tests/src/recursor/basic.rs(+1 -0)➕
tests/e2e-tests/src/recursor/basic/scenarios.rs(+141 -0)📝
tests/integration-tests/tests/integration/chained_authority_tests.rs(+1 -1)📄 Description
This PR allows the Hickory recursor to more accurately provide NXDomain and NoData responses to queries. This required a number of changes to accomplish:
There are also new tests for basic response code correctness to validate the changes above, and un-ignoring some conformance tests that now pass.
This change-set covers all of the NXDomain and NoError response mangling scenarios I could find in the code base, and it fixes a few DNSSEC-related issues. Significant DNSSEC-related processing issues remain, however, and I think will need to be addressed in a separate PR. While working on this fix, I also noticed:
The net result of this is that any queries to an insecure delegation from a secure parent will fail if hickory is configured as a validating resolver (i.e., almost all queries will fail if hickory is configured as a validating resolver.)
This PR does not fix the insecure delegation validation problem, but any realistic fix is contingent on fixing this issues this PR does address.
Related Issues/PRs:
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.