dns-server: fix rr-ttl-* priority issue

This commit is contained in:
Nick Peng
2023-03-01 19:53:22 +08:00
parent 6827554def
commit 95f843dc43

View File

@@ -335,12 +335,19 @@ static int _dns_server_get_conf_ttl(struct dns_request *request, int ttl)
rr_ttl = ttl_rule->ttl; rr_ttl = ttl_rule->ttl;
} }
/* make domain rule ttl high priority */
if (ttl_rule->ttl_min > 0) { if (ttl_rule->ttl_min > 0) {
rr_ttl_min = ttl_rule->ttl_min; 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) { if (ttl_rule->ttl_max > 0) {
rr_ttl_max = ttl_rule->ttl_max; 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; 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) { if (rr_ttl_max > 0 && ttl >= rr_ttl_max) {
ttl = rr_ttl_max; ttl = rr_ttl_max;
} else if (rr_ttl_min > 0 && ttl <= rr_ttl_min) { } else if (rr_ttl_min > 0 && ttl <= rr_ttl_min) {