diff --git a/bin/tests/system/resolver/tests.sh b/bin/tests/system/resolver/tests.sh index 2cb143fd55..eba88fb31d 100755 --- a/bin/tests/system/resolver/tests.sh +++ b/bin/tests/system/resolver/tests.sh @@ -858,11 +858,6 @@ status=$((status + ret)) n=$((n + 1)) echo_i "check that correct namespace is chosen for dual-stack-servers ($n)" ret=0 -# -# The two priming queries are needed until we fix dual-stack-servers fully -# -dig_with_opts @fd92:7065:b8e:ffff::9 v4.nameserver A >dig.out.prime1.${n} || ret=1 -dig_with_opts @fd92:7065:b8e:ffff::9 v4.nameserver AAAA >dig.out.prime2.${n} || ret=1 dig_with_opts @fd92:7065:b8e:ffff::9 foo.v4only.net A >dig.out.ns9.${n} || ret=1 grep "status: NOERROR" dig.out.ns9.${n} >/dev/null || ret=1 if [ $ret != 0 ]; then echo_i "failed"; fi diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index c73272992c..335637043b 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -2945,13 +2945,17 @@ fctx_finddone(void *arg) { } 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; + } } } }