From 964328145383d2c95377f48e61ea9f05cfb6d8a7 Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Sat, 11 Nov 2023 13:15:27 -0800 Subject: [PATCH] set loadtime during initial transfer of a secondary zone when transferring in a non-inline-signing secondary for the first time, we previously never set the value of zone->loadtime, so it remained zero. this caused a test failure in the statschannel system test, and that test case was temporarily disabled. the value is now set correctly and the test case has been reinstated. --- bin/tests/system/statschannel/generic.py | 12 +++++------- lib/dns/zone.c | 5 +++++ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/bin/tests/system/statschannel/generic.py b/bin/tests/system/statschannel/generic.py index bf4b038992..9e926537cc 100644 --- a/bin/tests/system/statschannel/generic.py +++ b/bin/tests/system/statschannel/generic.py @@ -19,7 +19,6 @@ fmt = "%Y-%m-%dT%H:%M:%SZ" # The constants were taken from BIND 9 source code (lib/dns/zone.c) max_refresh = timedelta(seconds=2419200) # 4 weeks max_expires = timedelta(seconds=14515200) # 24 weeks -now = datetime.utcnow().replace(microsecond=0) dayzero = datetime.utcfromtimestamp(0).replace(microsecond=0) @@ -34,21 +33,20 @@ def check_refresh(refresh, min_time, max_time): assert refresh <= max_time -def check_loaded(loaded, expected): # pylint: disable=unused-argument +def check_loaded(loaded, expected, now): # Sanity check the zone timers values - # NOTE This check has been disabled due to GL #3983 - # assert loaded == expected - # assert loaded < now - pass + assert loaded == expected + assert loaded <= now def check_zone_timers(loaded, expires, refresh, loaded_exp): + now = datetime.utcnow().replace(microsecond=0) # Sanity checks the zone timers values if expires is not None: check_expires(expires, now, now + max_expires) if refresh is not None: check_refresh(refresh, now, now + max_refresh) - check_loaded(loaded, loaded_exp) + check_loaded(loaded, loaded_exp, now) # diff --git a/lib/dns/zone.c b/lib/dns/zone.c index d87c8cf44b..9f54bc6ddb 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -17268,6 +17268,11 @@ again: zone->expiretime = expiretime; } + /* + * Set loadtime. + */ + zone->loadtime = now; + if (result == ISC_R_SUCCESS && xfrresult == ISC_R_SUCCESS) { char buf[DNS_NAME_FORMATSIZE + sizeof(": TSIG ''")]; if (zone->tsigkey != NULL) {