diff --git a/src/dns_server.c b/src/dns_server.c index c7ec1c6..1858ca7 100644 --- a/src/dns_server.c +++ b/src/dns_server.c @@ -2222,8 +2222,22 @@ static void _dns_server_tcp_idle_check(void) static void _dns_server_period_run_second(void) { static unsigned int sec = 0; + static time_t last = 0; + time_t now; sec++; + time(&now); + if (last == 0) { + last = now; + } + + if (now - 180 > last) { + dns_cache_invalidate(NULL, 0); + tlog(TLOG_WARN, "Service paused for 180s, force invalidate cache."); + } + + last = now; + if (sec % 2 == 0) { if (dns_conf_prefetch) { /* do pre-fetching */