]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
1799. [bug] 'rndc flushname' failed to flush negative cache
authorMark Andrews <marka@isc.org>
Tue, 15 Mar 2005 02:48:58 +0000 (02:48 +0000)
committerMark Andrews <marka@isc.org>
Tue, 15 Mar 2005 02:48:58 +0000 (02:48 +0000)
                        entries. [RT #13438]

CHANGES
lib/dns/cache.c

diff --git a/CHANGES b/CHANGES
index da745bcd4337906c089a2ced23c8ffd9b925185d..6f0768a267d7579543628acb7452546003418021 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -74,7 +74,8 @@
 1800.  [bug]           Changes #1719 allowed a INSIST to be triggered.
                        [RT #13428]
 
-1799.  [placeholder]   rt13438
+1799.  [bug]           'rndc flushname' failed to flush negative cache
+                       entries. [RT #13438]
 
 1798.  [func]          The server syntax has been extended to support a
                        range of servers.  [RT #11132]
index 8c6450a4aae58cf4eedff652cda1ed0eae8f1853..b0ee8e201d1f5b245461871544b045a5d8b1eb17 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: cache.c,v 1.57 2004/03/05 05:09:18 marka Exp $ */
+/* $Id: cache.c,v 1.58 2005/03/15 02:48:58 marka Exp $ */
 
 #include <config.h>
 
@@ -1021,27 +1021,10 @@ dns_cache_flushname(dns_cache_t *cache, dns_name_t *name) {
                dns_rdataset_init(&rdataset);
 
                dns_rdatasetiter_current(iter, &rdataset);
-
-               for (result = dns_rdataset_first(&rdataset);
-                    result == ISC_R_SUCCESS;
-                    result = dns_rdataset_next(&rdataset))
-               {
-                       dns_rdata_t rdata = DNS_RDATA_INIT;
-                       dns_rdatatype_t covers;
-
-                       dns_rdataset_current(&rdataset, &rdata);
-                       if (rdata.type == dns_rdatatype_rrsig)
-                               covers = dns_rdata_covers(&rdata);
-                       else
-                               covers = 0;
-                       result = dns_db_deleterdataset(cache->db, node, NULL,
-                                                      rdata.type, covers);
-                       if (result != ISC_R_SUCCESS &&
-                           result != DNS_R_UNCHANGED)
-                               break;
-               }
+               result = dns_db_deleterdataset(cache->db, node, NULL,
+                                              rdataset.type, rdataset.covers);
                dns_rdataset_disassociate(&rdataset);
-               if (result != ISC_R_NOMORE)
+               if (result != ISC_R_SUCCESS && result != DNS_R_UNCHANGED)
                        break;
        }
        if (result == ISC_R_NOMORE)