From: Alessio Podda Date: Wed, 17 Dec 2025 23:54:24 +0000 (+0100) Subject: Refactor setsigningtime X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1aa0768151d1fcf8416f7b9029c4dacea90bafb5;p=thirdparty%2Fbind9.git Refactor setsigningtime Change setsigningtime to take the node of the header being changed. Done to facilitate further refactoring that will remove the header pointer from vecheader. --- diff --git a/bin/tests/system/dyndb/driver/db.c b/bin/tests/system/dyndb/driver/db.c index 0db774af880..57c2e5de728 100644 --- a/bin/tests/system/dyndb/driver/db.c +++ b/bin/tests/system/dyndb/driver/db.c @@ -276,12 +276,13 @@ findnsec3node(dns_db_t *db, const dns_name_t *name, bool create, } static isc_result_t -setsigningtime(dns_db_t *db, dns_rdataset_t *rdataset, isc_stdtime_t resign) { +setsigningtime(dns_db_t *db, dns_dbnode_t *node, dns_rdataset_t *rdataset, + isc_stdtime_t resign) { sampledb_t *sampledb = (sampledb_t *)db; REQUIRE(VALID_SAMPLEDB(sampledb)); - return dns_db_setsigningtime(sampledb->db, rdataset, resign); + return dns_db_setsigningtime(sampledb->db, node, rdataset, resign); } static isc_result_t diff --git a/lib/dns/db.c b/lib/dns/db.c index 2cbf50c2dac..e86e1cba2b9 100644 --- a/lib/dns/db.c +++ b/lib/dns/db.c @@ -875,10 +875,11 @@ dns_db_getsize(dns_db_t *db, dns_dbversion_t *version, uint64_t *records, } isc_result_t -dns_db_setsigningtime(dns_db_t *db, dns_rdataset_t *rdataset, - isc_stdtime_t resign) { +dns_db_setsigningtime(dns_db_t *db, dns_dbnode_t *node, + dns_rdataset_t *rdataset, isc_stdtime_t resign) { if (db->methods->setsigningtime != NULL) { - return (db->methods->setsigningtime)(db, rdataset, resign); + return (db->methods->setsigningtime)(db, node, rdataset, + resign); } return ISC_R_NOTIMPLEMENTED; } diff --git a/lib/dns/diff.c b/lib/dns/diff.c index 97ab6db7b2c..4e9ea0c4940 100644 --- a/lib/dns/diff.c +++ b/lib/dns/diff.c @@ -264,7 +264,7 @@ update_rdataset(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, if (is_resign) { isc_stdtime_t resign; resign = dns_rdataset_minresign(&ardataset); - dns_db_setsigningtime(db, &ardataset, resign); + dns_db_setsigningtime(db, node, &ardataset, resign); } cleanup: diff --git a/lib/dns/include/dns/db.h b/lib/dns/include/dns/db.h index 72c735a39a8..b73c3b12b4e 100644 --- a/lib/dns/include/dns/db.h +++ b/lib/dns/include/dns/db.h @@ -139,8 +139,9 @@ typedef struct dns_db_methods { isc_result_t (*findnsec3node)(dns_db_t *db, const dns_name_t *name, bool create, dns_dbnode_t **nodep DNS__DB_FLARG); - isc_result_t (*setsigningtime)(dns_db_t *db, dns_rdataset_t *rdataset, - isc_stdtime_t resign); + isc_result_t (*setsigningtime)(dns_db_t *db, dns_dbnode_t *node, + dns_rdataset_t *rdataset, + isc_stdtime_t resign); isc_result_t (*getsigningtime)(dns_db_t *db, isc_stdtime_t *resign, dns_name_t *name, dns_typepair_t *typepair); @@ -1572,8 +1573,8 @@ dns__db_findnsec3node(dns_db_t *db, const dns_name_t *name, bool create, */ isc_result_t -dns_db_setsigningtime(dns_db_t *db, dns_rdataset_t *rdataset, - isc_stdtime_t resign); +dns_db_setsigningtime(dns_db_t *db, dns_dbnode_t *node, + dns_rdataset_t *rdataset, isc_stdtime_t resign); /*%< * Sets the re-signing time associated with 'rdataset' to 'resign'. * diff --git a/lib/dns/qpzone.c b/lib/dns/qpzone.c index 6c022c6a07c..0dce5ffb69e 100644 --- a/lib/dns/qpzone.c +++ b/lib/dns/qpzone.c @@ -2308,7 +2308,8 @@ getsize(dns_db_t *db, dns_dbversion_t *dbversion, uint64_t *records, } static isc_result_t -setsigningtime(dns_db_t *db, dns_rdataset_t *rdataset, isc_stdtime_t resign) { +setsigningtime(dns_db_t *db, dns_dbnode_t *node, dns_rdataset_t *rdataset, + isc_stdtime_t resign) { qpzonedb_t *qpdb = (qpzonedb_t *)db; dns_vecheader_t *header = NULL, oldheader; isc_rwlocktype_t nlocktype = isc_rwlocktype_none; @@ -2320,7 +2321,7 @@ setsigningtime(dns_db_t *db, dns_rdataset_t *rdataset, isc_stdtime_t resign) { header = dns_vecheader_getheader(rdataset); - nlock = qpzone_get_lock(HEADERNODE(header)); + nlock = qpzone_get_lock((qpznode_t *)node); NODE_WRLOCK(nlock, &nlocktype); oldheader = *header; @@ -2339,14 +2340,14 @@ setsigningtime(dns_db_t *db, dns_rdataset_t *rdataset, isc_stdtime_t resign) { INSIST(RESIGN(header)); LOCK(get_heap_lock(header)); if (resign == 0) { - isc_heap_delete(HEADERNODE(header)->heap->heap, + isc_heap_delete(((qpznode_t *)node)->heap->heap, header->heap_index); header->heap_index = 0; } else if (resign_sooner(header, &oldheader)) { - isc_heap_increased(HEADERNODE(header)->heap->heap, + isc_heap_increased(((qpznode_t *)node)->heap->heap, header->heap_index); } else if (resign_sooner(&oldheader, header)) { - isc_heap_decreased(HEADERNODE(header)->heap->heap, + isc_heap_decreased(((qpznode_t *)node)->heap->heap, header->heap_index); } UNLOCK(get_heap_lock(header)); @@ -5450,7 +5451,8 @@ qpzone_update_rdataset(qpzonedb_t *qpdb, qpz_version_t *version, dns_qp_t *qp, if (result == ISC_R_SUCCESS && is_resign) { isc_stdtime_t resign; resign = dns_rdataset_minresign(&ardataset); - dns_db_setsigningtime((dns_db_t *)qpdb, &ardataset, resign); + dns_db_setsigningtime((dns_db_t *)qpdb, (dns_dbnode_t *)node, + &ardataset, resign); } failure: