diff options
Diffstat (limited to 'usr.sbin/nsd/xfrd-disk.c')
-rw-r--r-- | usr.sbin/nsd/xfrd-disk.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/usr.sbin/nsd/xfrd-disk.c b/usr.sbin/nsd/xfrd-disk.c index 6ae8cd6249b..180302bbf17 100644 --- a/usr.sbin/nsd/xfrd-disk.c +++ b/usr.sbin/nsd/xfrd-disk.c @@ -289,6 +289,13 @@ xfrd_read_state(struct xfrd_state* xfrd) zone->state = xfrd_zone_refreshing; xfrd_set_refresh_now(zone); } + if(timeout != 0 && filetime + timeout < (uint32_t)xfrd_time()) { + /* timeout is in the past, refresh the zone */ + timeout = 0; + if(zone->state == xfrd_zone_ok) + zone->state = xfrd_zone_refreshing; + xfrd_set_refresh_now(zone); + } /* There is a soa && current time is past expiry point */ if(soa_disk_acquired_read!=0 && |