dns_conf: add expired domain prefetch time
This commit is contained in:
@@ -64,6 +64,7 @@ int dns_conf_cachesize = DEFAULT_DNS_CACHE_SIZE;
|
|||||||
int dns_conf_prefetch = 0;
|
int dns_conf_prefetch = 0;
|
||||||
int dns_conf_serve_expired = 1;
|
int dns_conf_serve_expired = 1;
|
||||||
int dns_conf_serve_expired_ttl = 24 * 3600; /* 1 day */
|
int dns_conf_serve_expired_ttl = 24 * 3600; /* 1 day */
|
||||||
|
int dns_conf_serve_expired_prefetch_time;
|
||||||
int dns_conf_serve_expired_reply_ttl = 3;
|
int dns_conf_serve_expired_reply_ttl = 3;
|
||||||
|
|
||||||
/* upstream servers */
|
/* upstream servers */
|
||||||
@@ -1860,6 +1861,7 @@ static struct config_item _config_item[] = {
|
|||||||
CONF_YESNO("serve-expired", &dns_conf_serve_expired),
|
CONF_YESNO("serve-expired", &dns_conf_serve_expired),
|
||||||
CONF_INT("serve-expired-ttl", &dns_conf_serve_expired_ttl, 0, CONF_INT_MAX),
|
CONF_INT("serve-expired-ttl", &dns_conf_serve_expired_ttl, 0, CONF_INT_MAX),
|
||||||
CONF_INT("serve-expired-reply-ttl", &dns_conf_serve_expired_reply_ttl, 0, CONF_INT_MAX),
|
CONF_INT("serve-expired-reply-ttl", &dns_conf_serve_expired_reply_ttl, 0, CONF_INT_MAX),
|
||||||
|
CONF_INT("serve-expired-prefetch-time", &dns_conf_serve_expired_prefetch_time, 0, CONF_INT_MAX),
|
||||||
CONF_YESNO("dualstack-ip-selection", &dns_conf_dualstack_ip_selection),
|
CONF_YESNO("dualstack-ip-selection", &dns_conf_dualstack_ip_selection),
|
||||||
CONF_INT("dualstack-ip-selection-threshold", &dns_conf_dualstack_ip_selection_threshold, 0, 1000),
|
CONF_INT("dualstack-ip-selection-threshold", &dns_conf_dualstack_ip_selection_threshold, 0, 1000),
|
||||||
CONF_CUSTOM("log-level", _config_log_level, NULL),
|
CONF_CUSTOM("log-level", _config_log_level, NULL),
|
||||||
|
|||||||
@@ -261,6 +261,7 @@ extern int dns_conf_cachesize;
|
|||||||
extern int dns_conf_prefetch;
|
extern int dns_conf_prefetch;
|
||||||
extern int dns_conf_serve_expired;
|
extern int dns_conf_serve_expired;
|
||||||
extern int dns_conf_serve_expired_ttl;
|
extern int dns_conf_serve_expired_ttl;
|
||||||
|
extern int dns_conf_serve_expired_prefetch_time;
|
||||||
extern int dns_conf_serve_expired_reply_ttl;
|
extern int dns_conf_serve_expired_reply_ttl;
|
||||||
extern struct dns_servers dns_conf_servers[DNS_MAX_SERVERS];
|
extern struct dns_servers dns_conf_servers[DNS_MAX_SERVERS];
|
||||||
extern int dns_conf_server_num;
|
extern int dns_conf_server_num;
|
||||||
|
|||||||
@@ -4562,9 +4562,13 @@ static void _dns_server_period_run_second(void)
|
|||||||
if (dns_conf_prefetch) {
|
if (dns_conf_prefetch) {
|
||||||
/* do pre-fetching */
|
/* do pre-fetching */
|
||||||
if (dns_conf_serve_expired) {
|
if (dns_conf_serve_expired) {
|
||||||
int prefetch_time = dns_conf_serve_expired_ttl / 2;
|
int prefetch_time = dns_conf_serve_expired_prefetch_time;
|
||||||
if (prefetch_time == 0 || prefetch_time > EXPIRED_DOMAIN_PREFTCH_TIME) {
|
|
||||||
prefetch_time = EXPIRED_DOMAIN_PREFTCH_TIME;
|
if (prefetch_time == 0) {
|
||||||
|
prefetch_time = dns_conf_serve_expired_ttl / 2;
|
||||||
|
if (prefetch_time == 0 || prefetch_time > EXPIRED_DOMAIN_PREFTCH_TIME) {
|
||||||
|
prefetch_time = EXPIRED_DOMAIN_PREFTCH_TIME;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
dns_cache_invalidate(NULL, 0, _dns_server_prefetch_expired_domain, prefetch_time);
|
dns_cache_invalidate(NULL, 0, _dns_server_prefetch_expired_domain, prefetch_time);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user