]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Tidy up (fixed)names in dsyncfetch_start
authorMark Andrews <marka@isc.org>
Mon, 22 Dec 2025 02:31:09 +0000 (13:31 +1100)
committerMark Andrews <marka@isc.org>
Mon, 22 Dec 2025 02:31:09 +0000 (13:31 +1100)
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.

lib/dns/include/dns/zonefetch.h
lib/dns/zone.c

index 0a3a35764479083474ddd325b8b7e5d62bf8647a..f4068ede38ea5df9cadad723ef34999619712f56 100644 (file)
@@ -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 {
index dfd847aeffa979234fb1fdf20c2133cbc5f99841..c15f88d6dde12f5f8645dbf5fc44080d80229d52 100644 (file)
@@ -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]--;