]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Do not cancel processing record datasets in catalog zone after an error
authorAram Sargsyan <aram@isc.org>
Thu, 24 Mar 2022 21:38:08 +0000 (21:38 +0000)
committerAram Sargsyan <aram@isc.org>
Thu, 14 Apr 2022 10:56:24 +0000 (10:56 +0000)
When there are multiple record datasets in a database node of a catalog
zone, and BIND encounters a soft error during processing of a dataset,
it breaks from the loop and doesn't process the other datasets in the
node.

There are cases when this is not desired. For example, the catalog zones
draft version 5 states that there must be a TXT RRset named
`version.$CATZ` with exactly one RR, but it doesn't set a limitation
on possible non-TXT RRsets named `version.$CATZ` existing alongside
with the TXT one. In case when one exists, we will get a processing
error and will not continue the loop to process the TXT RRset coming
next.

Remove the "break" statement to continue processing all record datasets.

lib/dns/catz.c

index 20639e2256819a29b45883c26c79731abfcdcba5..ab3d3f14b3b3b0813092833d30bd965eb4ed0ab6 100644 (file)
@@ -1976,9 +1976,6 @@ dns_catz_update_from_db(dns_db_t *db, dns_catz_zones_t *catzs) {
                                              isc_result_totext(result));
                        }
                        dns_rdataset_disassociate(&rdataset);
-                       if (result != ISC_R_SUCCESS) {
-                               break;
-                       }
                        result = dns_rdatasetiter_next(rdsiter);
                }