diff --git a/src/dns_server.c b/src/dns_server.c index 2c8fde9..80ea0ce 100644 --- a/src/dns_server.c +++ b/src/dns_server.c @@ -335,12 +335,19 @@ static int _dns_server_get_conf_ttl(struct dns_request *request, int ttl) rr_ttl = ttl_rule->ttl; } + /* make domain rule ttl high priority */ if (ttl_rule->ttl_min > 0) { rr_ttl_min = ttl_rule->ttl_min; + if (dns_conf_rr_ttl_max <= rr_ttl_min) { + rr_ttl_max = rr_ttl_min; + } } if (ttl_rule->ttl_max > 0) { rr_ttl_max = ttl_rule->ttl_max; + if (dns_conf_rr_ttl_min >= rr_ttl_max) { + rr_ttl_min = rr_ttl_max; + } } } @@ -348,6 +355,11 @@ static int _dns_server_get_conf_ttl(struct dns_request *request, int ttl) return rr_ttl; } + /* make rr_ttl_min first priority */ + if (rr_ttl_max < rr_ttl_min) { + rr_ttl_max = rr_ttl_min; + } + if (rr_ttl_max > 0 && ttl >= rr_ttl_max) { ttl = rr_ttl_max; } else if (rr_ttl_min > 0 && ttl <= rr_ttl_min) {