EDNS if the remote server doesn't understand EDNS.
In certain error cases during the construction of a query the resolver tried
to free data twice.
Set AD and CD when making EDNS queries.
If resquery_send() fails after a TCP connection is established, fail the fctx
the same way we do for the UDP case.
Revisions in preparation for DNSSEC validation.
If we get a non-EDNS-related FORMERR from a server that is not a forwarder,
assume that all servers for the zone will return FORMERR.
Cope with YXDOMAIN.
was not running for fctxs in the addrwait state. If the underlying ADB finds
never timed out (which is possible since they generate fetches), the fctx
would exist until the server was shutdown.
the very common case where some server responded with the answer.
This would prevent avoidance of the nonresponding servers,
significantly increasing latency.
as an argument to the function.
Conform to dns_adb_createfind() API changes.
cache_name() leaked the node reference in some cases; this would prevent
database cleanup from occurring later on.
subdomain of the query domain, tell the ADB to start looking at "." if
it doesn't know the address. This keeps us from getting stuck if the
nameserver is beneath the zone cut and we don't know its address
(e.g. because the A record has expired). By restarting from ".", we
ensure that any missing glue will be reestablished.
Misc. DNSSEC validation groundwork.
would cause seg faults.
Do not update the RTT if a query is being canceled due to internal failures.
Some servers generate badly formatted responses when they get an EDNS
query. We were marking these servers as bad, but a more practical
solution is to retry without EDNS. If a message fails to parse due to
DNS_R_FORMERR or DNS_R_UNEXPECTEDEND, and we were using EDNS, we now
retry the query without EDNS.
Add a "default" case to the message parsing error switch. This prevents bad
things from happening if message parsing fails in a nontypical way.