]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
set loadtime during initial transfer of a secondary zone
authorEvan Hunt <each@isc.org>
Sat, 11 Nov 2023 21:15:27 +0000 (13:15 -0800)
committerEvan Hunt <each@isc.org>
Mon, 20 Nov 2023 17:56:50 +0000 (09:56 -0800)
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.

(cherry picked from commit 964328145383d2c95377f48e61ea9f05cfb6d8a7)

bin/tests/system/statschannel/generic.py
lib/dns/zone.c

index 5ff09e257049b2745ae4f12e1c8ab2cedb3034e7..9e926537cc10ce932f0332cd1faa5a238c2d067f 100644 (file)
@@ -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,19 +33,20 @@ def check_refresh(refresh, min_time, max_time):
     assert refresh <= max_time
 
 
-def check_loaded(loaded, expected):
+def check_loaded(loaded, expected, now):
     # Sanity check the zone timers values
     assert loaded == expected
-    assert loaded < now
+    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)
 
 
 #
index cf1d841c8a1c890428288e408ba4bb81b590f441..3c0051aa4d6a2e03378ff7014f613308df133c30 100644 (file)
@@ -17612,6 +17612,12 @@ again:
                        DNS_ZONE_TIME_ADD(&now, zone->expire,
                                          &zone->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) {