From: Alessio Podda Date: Fri, 22 May 2026 15:58:10 +0000 (+0200) Subject: Remove name boundary optimization X-Git-Tag: v9.21.23~17^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7502e73333943fb45ce0a679aac5ccfce75012aa;p=thirdparty%2Fbind9.git Remove name boundary optimization In MR !9740, we introduced an optimization that reduces memory usage by processing rdatas in batches during AXFR. The maximum batch size is 128, but the batch size was allowed to grow beyond that limit if all rdatas in a batch were for the same name, as that allows a more efficient optimization. This optimization could theoretically allow the batch size arbitrarily for a sufficient large zone transfer. Since synthetic tests don't show any performance improvement from the optimization, this MR removes it. --- diff --git a/lib/dns/diff.c b/lib/dns/diff.c index 9ab3ff7cc4e..e8dcae9fbcc 100644 --- a/lib/dns/diff.c +++ b/lib/dns/diff.c @@ -139,19 +139,6 @@ dns_diff_append(dns_diff_t *diff, dns_difftuple_t **tuplep) { *tuplep = NULL; } -bool -dns_diff_is_boundary(const dns_diff_t *diff, dns_name_t *new_name) { - REQUIRE(DNS_DIFF_VALID(diff)); - REQUIRE(DNS_NAME_VALID(new_name)); - - if (ISC_LIST_EMPTY(diff->tuples)) { - return false; - } - - dns_difftuple_t *tail = ISC_LIST_TAIL(diff->tuples); - return !dns_name_caseequal(&tail->name, new_name); -} - size_t dns_diff_size(const dns_diff_t *diff) { REQUIRE(DNS_DIFF_VALID(diff)); diff --git a/lib/dns/include/dns/diff.h b/lib/dns/include/dns/diff.h index 32e81890de4..eb9ad1e8c1d 100644 --- a/lib/dns/include/dns/diff.h +++ b/lib/dns/include/dns/diff.h @@ -187,16 +187,6 @@ dns_diff_append(dns_diff_t *diff, dns_difftuple_t **tuple); * \li The tuple has been freed, or will be freed when the diff is cleared. */ -bool -dns_diff_is_boundary(const dns_diff_t *diff, dns_name_t *name); -/*%< - * Checks if 'name' is equal, up to case, to the last name of the diff. - * - * Requires: - * \li 'diff' is a valid diff. - * \li 'name' is a valid dns name. - */ - size_t dns_diff_size(const dns_diff_t *diff); /*%< diff --git a/lib/dns/xfrin.c b/lib/dns/xfrin.c index 8f974c87465..4cd74212bce 100644 --- a/lib/dns/xfrin.c +++ b/lib/dns/xfrin.c @@ -324,9 +324,7 @@ axfr_putdata(dns_xfrin_t *xfr, dns_diffop_t op, dns_name_t *name, dns_ttl_t ttl, } CHECK(dns_zone_checknames(xfr->zone, name, rdata)); - if (dns_diff_size(&xfr->diff) > 128 && - dns_diff_is_boundary(&xfr->diff, name)) - { + if (dns_diff_size(&xfr->diff) > 128) { xfrin_work_t work = (xfrin_work_t){ .magic = XFRIN_WORK_MAGIC, .result = ISC_R_UNSET,