From 95f843dc43415be3927822211ababf8afc87770f Mon Sep 17 00:00:00 2001 From: Nick Peng Date: Wed, 1 Mar 2023 19:53:22 +0800 Subject: [PATCH] dns-server: fix rr-ttl-* priority issue --- src/dns_server.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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) {