Commit 99695582cd for bind
commit 99695582cd56c18c67352b6c99b250a839dffbd4
Author: Alessio Podda <alessio@isc.org>
Date: Thu Sep 24 09:45:33 2026 +0200
Convert more callsites to appendlistminimal
We convert two more callsites that called dns_diff_appendminimal
in a loop to appendlistminimal.
diff --git a/lib/dns/zone.c b/lib/dns/zone.c
index 31df08cf5f..01f27e6459 100644
--- a/lib/dns/zone.c
+++ b/lib/dns/zone.c
@@ -13965,6 +13965,7 @@ sync_secure_journal(dns_zone_t *zone, dns_zone_t *raw, dns_journal_t *journal,
uint32_t start, uint32_t end, dns_difftuple_t **soatuplep,
dns_diff_t *diff) {
isc_result_t result;
+ dns_diff_t pending;
dns_difftuple_t *tuple = NULL;
dns_diffop_t op = DNS_DIFFOP_ADD;
int n_soa = 0;
@@ -13975,6 +13976,8 @@ sync_secure_journal(dns_zone_t *zone, dns_zone_t *raw, dns_journal_t *journal,
return DNS_R_UNCHANGED;
}
+ dns_diff_init(diff->mctx, &pending);
+
CHECK(dns_journal_iter_init(journal, start, end, NULL));
for (result = dns_journal_first_rr(journal); result == ISC_R_SUCCESS;
result = dns_journal_next_rr(journal))
@@ -14008,7 +14011,7 @@ sync_secure_journal(dns_zone_t *zone, dns_zone_t *raw, dns_journal_t *journal,
dns_zone_log(raw, ISC_LOG_ERROR,
"corrupt journal file: '%s'\n",
raw->journal);
- return ISC_R_FAILURE;
+ CLEANUP(ISC_R_FAILURE);
}
if (zone->privatetype != 0 && rdata->type == zone->privatetype)
@@ -14043,13 +14046,14 @@ sync_secure_journal(dns_zone_t *zone, dns_zone_t *raw, dns_journal_t *journal,
op = (n_soa == 1) ? DNS_DIFFOP_DEL : DNS_DIFFOP_ADD;
dns_difftuple_create(diff->mctx, op, name, ttl, rdata, &tuple);
- dns_diff_appendminimal(diff, &tuple);
+ dns_diff_append(&pending, &tuple);
}
if (result == ISC_R_NOMORE) {
result = ISC_R_SUCCESS;
}
cleanup:
+ dns_diff_appendlistminimal(diff, &pending);
return result;
}
@@ -18456,6 +18460,10 @@ zone_notifycds(dns_zone_t *zone) {
static void
update_ttl(dns_rdataset_t *rdataset, dns_name_t *name, dns_ttl_t ttl,
dns_diff_t *diff) {
+ dns_diff_t pending;
+
+ dns_diff_init(diff->mctx, &pending);
+
/*
* Delete everything using the existing TTL.
*/
@@ -18466,7 +18474,7 @@ update_ttl(dns_rdataset_t *rdataset, dns_name_t *name, dns_ttl_t ttl,
dns_rdataset_current(rdataset, &rdata);
dns_difftuple_create(diff->mctx, DNS_DIFFOP_DEL, name,
rdataset->ttl, &rdata, &tuple);
- dns_diff_appendminimal(diff, &tuple);
+ dns_diff_append(&pending, &tuple);
}
/*
@@ -18479,8 +18487,9 @@ update_ttl(dns_rdataset_t *rdataset, dns_name_t *name, dns_ttl_t ttl,
dns_rdataset_current(rdataset, &rdata);
dns_difftuple_create(diff->mctx, DNS_DIFFOP_ADD, name, ttl,
&rdata, &tuple);
- dns_diff_appendminimal(diff, &tuple);
+ dns_diff_append(&pending, &tuple);
}
+ dns_diff_appendlistminimal(diff, &pending);
}
static isc_result_t
@@ -18546,7 +18555,7 @@ add_tuple(dns_diff_t *diff, dns_difftuple_t *tuple) {
dns_difftuple_t *copy = NULL;
dns_difftuple_copy(tuple, ©);
- dns_diff_appendminimal(diff, ©);
+ dns_diff_append(diff, ©);
}
static void
@@ -18554,10 +18563,12 @@ zone_apply_skrbundle(dns_zone_t *zone, dns_skrbundle_t *bundle,
dns_rdataset_t *dnskeyset, dns_rdataset_t *cdsset,
dns_rdataset_t *cdnskeyset, dns_diff_t *diff) {
dns_kasp_t *kasp = zone->kasp;
+ dns_diff_t pending;
REQUIRE(DNS_ZONE_VALID(zone));
REQUIRE(DNS_KASP_VALID(kasp));
REQUIRE(DNS_SKRBUNDLE_VALID(bundle));
+ dns_diff_init(diff->mctx, &pending);
/* Remove existing DNSKEY, CDS, and CDNSKEY records. */
remove_rdataset(zone, diff, dnskeyset);
@@ -18568,11 +18579,11 @@ zone_apply_skrbundle(dns_zone_t *zone, dns_skrbundle_t *bundle,
ISC_LIST_FOREACH(bundle->diff.tuples, tuple, link) {
switch (tuple->rdata.type) {
case dns_rdatatype_dnskey:
- add_tuple(diff, tuple);
+ add_tuple(&pending, tuple);
break;
case dns_rdatatype_cdnskey:
case dns_rdatatype_cds:
- add_tuple(diff, tuple);
+ add_tuple(&pending, tuple);
break;
case dns_rdatatype_rrsig:
/* Not interested in right now */
@@ -18581,6 +18592,9 @@ zone_apply_skrbundle(dns_zone_t *zone, dns_skrbundle_t *bundle,
INSIST(0);
}
}
+ if (!ISC_LIST_EMPTY(pending.tuples)) {
+ dns_diff_appendlistminimal(diff, &pending);
+ }
}
static void