Skip to content

Commit 60a3719

Browse files
committed
dns_server: fix local ttl issue
1 parent e897788 commit 60a3719

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

src/dns_conf.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3283,10 +3283,6 @@ static int _dns_conf_load_post(void)
32833283
dns_conf_rr_ttl_max = dns_conf_rr_ttl_min;
32843284
}
32853285

3286-
if (dns_conf_local_ttl == 0) {
3287-
dns_conf_local_ttl = dns_conf_rr_ttl_min;
3288-
}
3289-
32903286
if (dns_resolv_file[0] == '\0') {
32913287
safe_strncpy(dns_resolv_file, DNS_RESOLV_FILE, sizeof(dns_resolv_file));
32923288
}

src/dns_server.c

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
#define DNS_SERVER_TMOUT_TTL (5 * 60)
5353
#define DNS_SERVER_FAIL_TTL (60)
5454
#define DNS_SERVER_SOA_TTL (30)
55+
#define DNS_SERVER_ADDR_TTL (60)
5556
#define DNS_CONN_BUFF_SIZE 4096
5657
#define DNS_REQUEST_MAX_TIMEOUT 950
5758
#define DNS_PING_TIMEOUT (DNS_REQUEST_MAX_TIMEOUT)
@@ -3888,6 +3889,34 @@ static int _dns_server_pre_process_rule_flags(struct dns_request *request)
38883889
return 0;
38893890
}
38903891

3892+
static int _dns_server_get_local_ttl(struct dns_request *request)
3893+
{
3894+
struct dns_ttl_rule *ttl_rule;
3895+
3896+
/* get domain rule flag */
3897+
ttl_rule = _dns_server_get_dns_rule(request, DOMAIN_RULE_TTL);
3898+
if (ttl_rule != NULL) {
3899+
if (ttl_rule->ttl > 0) {
3900+
return ttl_rule->ttl;
3901+
}
3902+
}
3903+
3904+
if (dns_conf_local_ttl > 0) {
3905+
return dns_conf_local_ttl;
3906+
}
3907+
3908+
if (dns_conf_rr_ttl > 0) {
3909+
return dns_conf_rr_ttl;
3910+
}
3911+
3912+
if (dns_conf_rr_ttl_min > 0) {
3913+
return dns_conf_rr_ttl_min;
3914+
}
3915+
3916+
return DNS_SERVER_ADDR_TTL;
3917+
}
3918+
3919+
38913920
static int _dns_server_process_address(struct dns_request *request)
38923921
{
38933922
struct dns_rule_address_IPV4 *address_ipv4 = NULL;
@@ -3919,7 +3948,7 @@ static int _dns_server_process_address(struct dns_request *request)
39193948
}
39203949

39213950
request->rcode = DNS_RC_NOERROR;
3922-
request->ip_ttl = dns_conf_local_ttl;
3951+
request->ip_ttl = _dns_server_get_local_ttl(request);
39233952
request->has_ip = 1;
39243953

39253954
struct dns_server_post_context context;

0 commit comments

Comments
 (0)