From: Mark Andrews Date: Thu, 29 Jun 2023 05:52:32 +0000 (+1000) Subject: Provide a mechanism to return the expire option value X-Git-Tag: v9.19.17~25^2~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=87912e4bb8410ffe1d88295b22d319f5cd410e2c;p=thirdparty%2Fbind9.git Provide a mechanism to return the expire option value to the zone code so that it can be used to adjust the expire time. --- diff --git a/lib/dns/include/dns/types.h b/lib/dns/include/dns/types.h index b334eff0a23..70e0b022747 100644 --- a/lib/dns/include/dns/types.h +++ b/lib/dns/include/dns/types.h @@ -434,7 +434,7 @@ typedef isc_result_t (*dns_additionaldatafunc_t)( typedef isc_result_t (*dns_digestfunc_t)(void *, isc_region_t *); -typedef void (*dns_xfrindone_t)(dns_zone_t *, isc_result_t); +typedef void (*dns_xfrindone_t)(dns_zone_t *, uint32_t *, isc_result_t); typedef void (*dns_updatecallback_t)(void *, isc_result_t, dns_message_t *); diff --git a/lib/dns/xfrin.c b/lib/dns/xfrin.c index fba413cba6e..be7a427226a 100644 --- a/lib/dns/xfrin.c +++ b/lib/dns/xfrin.c @@ -833,7 +833,7 @@ xfrin_fail(dns_xfrin_t *xfr, isc_result_t result, const char *msg) { dns_journal_destroy(&xfr->ixfr.journal); } if (xfr->done != NULL) { - (xfr->done)(xfr->zone, result); + (xfr->done)(xfr->zone, NULL, result); xfr->done = NULL; } xfr->shutdown_result = result; @@ -1545,7 +1545,7 @@ xfrin_recv_done(isc_result_t result, isc_region_t *region, void *arg) { if (xfr->done != NULL) { LIBDNS_XFRIN_DONE_CALLBACK_BEGIN(xfr, xfr->info, result); - (xfr->done)(xfr->zone, ISC_R_SUCCESS); + (xfr->done)(xfr->zone, NULL, ISC_R_SUCCESS); xfr->done = NULL; LIBDNS_XFRIN_DONE_CALLBACK_END(xfr, xfr->info, result); } diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 2ecc27557cb..8a13a2dcc4f 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -862,7 +862,7 @@ zone_catz_disable(dns_zone_t *zone); static isc_result_t default_journal(dns_zone_t *zone); static void -zone_xfrdone(dns_zone_t *zone, isc_result_t result); +zone_xfrdone(dns_zone_t *zone, uint32_t *expireopt, isc_result_t result); static isc_result_t zone_postload(dns_zone_t *zone, dns_db_t *db, isc_time_t loadtime, isc_result_t result); @@ -17079,7 +17079,7 @@ zone_detachdb(dns_zone_t *zone) { } static void -zone_xfrdone(dns_zone_t *zone, isc_result_t result) { +zone_xfrdone(dns_zone_t *zone, uint32_t *expireopt, isc_result_t result) { isc_time_t now; bool again = false; unsigned int soacount; @@ -17091,8 +17091,11 @@ zone_xfrdone(dns_zone_t *zone, isc_result_t result) { REQUIRE(DNS_ZONE_VALID(zone)); - dns_zone_logc(zone, DNS_LOGCATEGORY_XFER_IN, ISC_LOG_DEBUG(1), - "zone transfer finished: %s", isc_result_totext(result)); + dns_zone_logc( + zone, DNS_LOGCATEGORY_XFER_IN, ISC_LOG_DEBUG(1), + expireopt == NULL ? "zone transfer finished: %s" + : "zone transfer finished: %s, expire=%u", + isc_result_totext(result), expireopt != NULL ? *expireopt : 0); /* * Obtaining a lock on the zone->secure (see zone_send_secureserial) @@ -17715,7 +17718,7 @@ failure: * zmgr->xfrin_in_progress. */ if (result != ISC_R_SUCCESS) { - zone_xfrdone(zone, result); + zone_xfrdone(zone, NULL, result); } if (zmgr_tlsctx_cache != NULL) {