Named was stopping nameserver address resolution attempts too soon
when dual stack servers are configured. Dual stack servers are
used when there are *not* addresses for the server in a particular
address family so find->status == DNS_ADB_NOMOREADDRESSES is not a
sufficient stopping condition when dual stack servers are available.
Call fctx_try to see if the alternate servers can be used.
} else {
fctx->findfail++;
if (atomic_load_acquire(&fctx->pending) == 0) {
- /*
- * We've got nothing else to wait for
- * and don't know the answer. There's
- * nothing to do but fail the fctx.
- */
FCTX_ATTR_CLR(fctx, FCTX_ATTR_ADDRWAIT);
- want_done = true;
+ if (!ISC_LIST_EMPTY(fctx->res->alternates)) {
+ want_try = true;
+ } else {
+ /*
+ * We've got nothing else to wait for
+ * and don't know the answer. There's
+ * nothing to do but fail the fctx.
+ */
+ want_done = true;
+ }
}
}
}