Check that there was no OPT record before falling back

to plain DNS on FORMERR.
This commit is contained in:
Mark Andrews 2021-02-01 13:05:08 +11:00
parent fb4b9d690f
commit a3fda086f7
2 changed files with 3 additions and 3 deletions

View file

@ -10005,7 +10005,7 @@ rctx_badserver(respctx_t *rctx, isc_result_t result) {
return (ISC_R_SUCCESS);
}
if ((rcode == dns_rcode_formerr) &&
if ((rcode == dns_rcode_formerr) && rctx->opt == NULL &&
(rctx->retryopts & DNS_FETCHOPT_NOEDNS0) == 0)
{
/*

View file

@ -13606,7 +13606,7 @@ stub_callback(isc_task_t *task, isc_event_t *event) {
if (!DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NOEDNS) &&
(msg->rcode == dns_rcode_servfail ||
msg->rcode == dns_rcode_notimp ||
msg->rcode == dns_rcode_formerr))
(msg->rcode == dns_rcode_formerr && msg->opt == NULL)))
{
dns_zone_log(zone, ISC_LOG_DEBUG(1),
"refreshing stub: rcode (%.*s) retrying "
@ -13995,7 +13995,7 @@ refresh_callback(isc_task_t *task, isc_event_t *event) {
if (!DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NOEDNS) &&
(msg->rcode == dns_rcode_servfail ||
msg->rcode == dns_rcode_notimp ||
msg->rcode == dns_rcode_formerr))
(msg->rcode == dns_rcode_formerr && msg->opt == NULL)))
{
dns_zone_log(zone, ISC_LOG_DEBUG(1),
"refresh: rcode (%.*s) retrying without "