From: Mark Andrews Date: Mon, 22 Dec 2025 02:31:09 +0000 (+1100) Subject: Tidy up (fixed)names in dsyncfetch_start X-Git-Tag: v9.21.17~16^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d1f3e92ffa9c92d7e7b9899910fe30d12f0e5ba0;p=thirdparty%2Fbind9.git Tidy up (fixed)names in dsyncfetch_start Use a static dns_name_t for the "_dsync" label. Remove some unnecessary dns_fixedname_t variables. Remove unnecessary dsyncname dns_name_t from dns_dsyncfetch and rename dns_fixedname_t fname to dsyncname. --- diff --git a/lib/dns/include/dns/zonefetch.h b/lib/dns/include/dns/zonefetch.h index 0a3a3576447..f4068ede38e 100644 --- a/lib/dns/include/dns/zonefetch.h +++ b/lib/dns/include/dns/zonefetch.h @@ -58,9 +58,8 @@ typedef struct dns_zonefetch_methods { * Fetch contexts. */ struct dns_dsyncfetch { - dns_fixedname_t fname; + dns_fixedname_t dsyncname; dns_name_t pname; - dns_name_t dsyncname; }; struct dns_keyfetch { diff --git a/lib/dns/zone.c b/lib/dns/zone.c index dfd847aeffa..c15f88d6dde 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -21120,12 +21120,14 @@ zone_checkds(dns_zone_t *zone) { #endif /* ifdef ENABLE_AFL */ } +static unsigned char _dsync_data[] = "\x06_dsync"; +static dns_name_t _dsync = DNS_NAME_INITNONABSOLUTE(_dsync_data); + static isc_result_t dsyncfetch_start(dns_zonefetch_t *fetch) { dns_dsyncfetch_t *dsyncfetch; dns_zone_t *zone; - dns_fixedname_t fndl, fnp; - dns_name_t *name, *dsyncname, *dsynclabel, *prefix; + dns_name_t *dsyncname, prefix; unsigned int nlabels; isc_result_t result; @@ -21140,37 +21142,33 @@ dsyncfetch_start(dns_zonefetch_t *fetch) { * The prefix is the relative domain name of the child consisting of * the labels under the zonecut. */ - dsyncname = dns_fixedname_initname(&dsyncfetch->fname); - dsynclabel = dns_fixedname_initname(&fndl); - dns_name_fromstring(dsynclabel, "_dsync", NULL, 0, fetch->mctx); - result = dns_name_concatenate(dsynclabel, &dsyncfetch->pname, - dsyncname); + dsyncname = dns_fixedname_initname(&dsyncfetch->dsyncname); + + nlabels = dns_name_countlabels(&dsyncfetch->pname); + dns_name_init(&prefix); + dns_name_split(dns_fixedname_name(&fetch->name), nlabels, &prefix, + NULL); + + result = dns_name_concatenate(&prefix, &_dsync, dsyncname); if (result != ISC_R_SUCCESS) { dnssec_log(zone, ISC_LOG_ERROR, "dsyncfetch: failed to create parent DSYNC fetch " - "(parent part): %s", + "(child part): %s", isc_result_totext(result)); return result; } - name = dns_fixedname_name(&fetch->name); - nlabels = dns_name_countlabels(&dsyncfetch->pname); - prefix = dns_fixedname_initname(&fnp); - dns_name_split(name, nlabels, prefix, NULL); - result = dns_name_concatenate(prefix, dsyncname, dsyncname); + result = dns_name_concatenate(dsyncname, &dsyncfetch->pname, dsyncname); if (result != ISC_R_SUCCESS) { dnssec_log(zone, ISC_LOG_ERROR, "dsyncfetch: failed to create parent DSYNC fetch " - "(child part): %s", + "(parent part): %s", isc_result_totext(result)); return result; } - dns_name_init(&dsyncfetch->dsyncname); - dns_name_clone(dsyncname, &dsyncfetch->dsyncname); - fetch->qtype = dns_rdatatype_dsync; - fetch->qname = &dsyncfetch->dsyncname; + fetch->qname = dsyncname; return ISC_R_SUCCESS; } @@ -21246,7 +21244,7 @@ dsyncfetch_done(dns_zonefetch_t *fetch, isc_result_t eresult) { dsyncfetch = &fetch->fetchdata.dsyncfetch; zone = fetch->zone; rrset = &fetch->rrset; - dsyncname = &dsyncfetch->dsyncname; + dsyncname = dns_fixedname_name(&dsyncfetch->dsyncname); zone->fetchcount[ZONEFETCHTYPE_DSYNC]--;