]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Revert "Merge branch '3678-serve-stale-servfailing-unexpectedly-v9_16' into 'v9_16'"
authorTom Krizek <tkrizek@isc.org>
Wed, 7 Dec 2022 20:44:48 +0000 (21:44 +0100)
committerTom Krizek <tkrizek@isc.org>
Thu, 8 Dec 2022 09:23:40 +0000 (10:23 +0100)
This reverts commit b2a4447af89e3c8234ca507ae616e5fd36b75147, reversing
changes made to 8924f929569324e8a9390cf4b7b0f63c1a0dc17f.

It also removes release note 6038, since the fix is reverted.

CHANGES
bin/tests/system/serve-stale/ans2/ans.pl
bin/tests/system/serve-stale/tests.sh
lib/ns/query.c

diff --git a/CHANGES b/CHANGES
index ae4562ed6044edb40f3d723b370fcbae95214103..23e0c58d6f298291ab3c70f771b64ef159b58653 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -9,11 +9,6 @@
                        also removing the referenced zone could leave a
                        dangling pointer. [GL #3683]
 
-6038.  [bug]           In some serve stale scenarios, like when following an
-                       expired CNAME record, named could return SERVFAIL if the
-                       previous request wasn't successful. Consider non-stale
-                       data when in serve-stale mode. [GL #3678]
-
 6031.  [bug]           Move the "final reference detached" log message
                        from dns_zone unit to the DEBUG(1) log level.
                        [GL #3707]
index f14ae67fe8f7306c1a0d42558dc34fde07c31990..0af055a4fb11e09e56dd415e9362867f64dcfc19 100644 (file)
@@ -58,8 +58,6 @@ my $CAA = "othertype.example 2 IN CAA 0 issue \"ca1.example.net\"";
 my $negSOA = "example 2 IN SOA . . 0 0 0 0 300";
 my $CNAME = "cname.example 7 IN CNAME target.example";
 my $TARGET = "target.example 9 IN A $localaddr";
-my $SHORTCNAME = "shortttl.cname.example 1 IN CNAME longttl.target.example";
-my $LONGTARGET = "longttl.target.example 600 IN A $localaddr";
 
 sub reply_handler {
     my ($qname, $qclass, $qtype) = @_;
@@ -168,28 +166,6 @@ sub reply_handler {
            push @auth, $rr;
        }
        $rcode = "NOERROR";
-    } elsif ($qname eq "shortttl.cname.example") {
-       if ($qtype eq "A") {
-           my $rr = new Net::DNS::RR($SHORTCNAME);
-           push @ans, $rr;
-       } else {
-           my $rr = new Net::DNS::RR($negSOA);
-           push @auth, $rr;
-       }
-       $rcode = "NOERROR";
-    } elsif ($qname eq "longttl.target.example") {
-       if ($slow_response) {
-                print "  Sleeping 3 seconds\n";
-               sleep(3);
-       }
-       if ($qtype eq "A") {
-           my $rr = new Net::DNS::RR($LONGTARGET);
-           push @ans, $rr;
-       } else {
-           my $rr = new Net::DNS::RR($negSOA);
-           push @auth, $rr;
-       }
-       $rcode = "NOERROR";
     } elsif ($qname eq "longttl.example") {
        if ($qtype eq "TXT") {
            my $rr = new Net::DNS::RR($LONGTXT);
index 29faa30b00e2d998e5cab43171ae4eba37e5d57d..2edae51dc7fe6ef39592c58173a46f3af6abf639 100755 (executable)
@@ -1777,79 +1777,6 @@ grep "data\.example\..*[12].*IN.*TXT.*A text record with a 2 second ttl" dig.out
 if [ $ret != 0 ]; then echo_i "failed"; fi
 status=$((status+ret))
 
-##############################################################
-# Test for stale-answer-client-timeout off and CNAME record. #
-##############################################################
-echo_i "test stale-answer-client-timeout (0) and CNAME record"
-
-n=$((n+1))
-echo_i "prime cache shortttl.cname.example (stale-answer-client-timeout off) ($n)"
-ret=0
-$DIG -p ${PORT} @10.53.0.3 shortttl.cname.example A > dig.out.test$n
-grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-grep "ANSWER: 2," dig.out.test$n > /dev/null || ret=1
-grep "shortttl\.cname\.example\..*1.*IN.*CNAME.*longttl\.target\.example\." dig.out.test$n > /dev/null || ret=1
-grep "longttl\.target\.example\..*600.*IN.*A.*10\.53\.0\.2" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
-
-# Allow RRset to become stale.
-sleep 1
-
-n=$((n+1))
-echo_i "disable responses from authoritative server ($n)"
-ret=0
-$DIG -p ${PORT} @10.53.0.2 txt disable  > dig.out.test$n
-grep "ANSWER: 1," dig.out.test$n > /dev/null || ret=1
-grep "TXT.\"0\"" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
-
-n=$((n+1))
-ret=0
-echo_i "check stale shortttl.cname.example comes from cache (stale-answer-client-timeout off) ($n)"
-nextpart ns3/named.run > /dev/null
-$DIG -p ${PORT} @10.53.0.3 shortttl.cname.example A > dig.out.test$n
-wait_for_log 5 "shortttl.cname.example resolver failure, stale answer used" ns3/named.run || ret=1
-grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
-grep "ANSWER: 2," dig.out.test$n > /dev/null || ret=1
-grep "shortttl\.cname\.example\..*3.*IN.*CNAME.*longttl\.target\.example\." dig.out.test$n > /dev/null || ret=1
-# We can't reliably test the TTL of the longttl.target.example A record.
-grep "longttl\.target\.example\..*IN.*A.*10\.53\.0\.2" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
-
-n=$((n+1))
-echo_i "enable responses from authoritative server ($n)"
-ret=0
-$DIG -p ${PORT} @10.53.0.2 txt enable  > dig.out.test$n
-grep "ANSWER: 1," dig.out.test$n > /dev/null || ret=1
-grep "TXT.\"1\"" dig.out.test$n > /dev/null || ret=1
-if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
-
-n=$((n+1))
-echo_i "check server is alive or restart ($n)"
-ret=0
-$RNDCCMD 10.53.0.3 status > rndc.out.test$n 2>&1 || ret=1
-if [ $ret != 0 ]; then
-    echo_i "failed"
-    echo_i "restart ns3"
-    start_server --noclean --restart --port ${PORT} serve-stale ns3
-fi
-status=$((status+ret))
-
-n=$((n+1))
-echo_i "check server is alive or restart ($n)"
-ret=0
-$RNDCCMD 10.53.0.3 status > rndc.out.test$n 2>&1 || ret=1
-if [ $ret != 0 ]; then
-    echo_i "failed"
-    echo_i "restart ns3"
-    start_server --noclean --restart --port ${PORT} serve-stale ns3
-fi
-status=$((status+ret))
-
 #############################################
 # Test for stale-answer-client-timeout 0.   #
 #############################################
index 62c5e6d82369ad46c08ae1f6919c9539db94d4e9..308fc019532f2d7c7e6061123f8b2e88cee2cdb5 100644 (file)
@@ -5837,13 +5837,6 @@ query_lookup(query_ctx_t *qctx) {
                dns_cache_updatestats(qctx->view->cache, result);
        }
 
-       if (dns_rdataset_isassociated(qctx->rdataset) &&
-           dns_rdataset_count(qctx->rdataset) > 0 && !STALE(qctx->rdataset))
-       {
-               /* Found non-stale usable rdataset. */
-               goto gotanswer;
-       }
-
        /*
         * If DNS_DBFIND_STALEOK is set this means we are dealing with a
         * lookup following a failed lookup and it is okay to serve a stale
@@ -5990,7 +5983,6 @@ query_lookup(query_ctx_t *qctx) {
                qctx->rdataset->attributes |= DNS_RDATASETATTR_STALE_ADDED;
        }
 
-gotanswer:
        result = query_gotanswer(qctx, result);
 
 cleanup:
@@ -9248,9 +9240,7 @@ query_nxdomain(query_ctx_t *qctx, bool empty_wild) {
        {
                ttl = 0;
        }
-       if (!qctx->nxrewrite ||
-           (qctx->rpz_st != NULL && qctx->rpz_st->m.rpz->addsoa))
-       {
+       if (!qctx->nxrewrite || qctx->rpz_st->m.rpz->addsoa) {
                result = query_addsoa(qctx, ttl, section);
                if (result != ISC_R_SUCCESS) {
                        QUERY_ERROR(qctx, result);