From 3cf2d35c13eed00971a6557b28f94a4a50c58c7b Mon Sep 17 00:00:00 2001 From: Nick Peng Date: Sat, 15 Feb 2020 19:00:46 +0800 Subject: [PATCH] dualstack-selection: force IPV4 when not found IPV6 in cache --- src/dns_server.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/dns_server.c b/src/dns_server.c index f9ef719..f44220b 100644 --- a/src/dns_server.c +++ b/src/dns_server.c @@ -1962,6 +1962,15 @@ static int _dns_server_process_cache(struct dns_request *request) dns_cache = dns_cache_lookup(request->domain, request->qtype); if (dns_cache == NULL) { + if (request->dualstack_selection && request->qtype == DNS_T_AAAA) { + dns_cache_A = dns_cache_lookup(request->domain, DNS_T_A); + if (dns_cache_A) { + tlog(TLOG_DEBUG, "No IPV6 Found, Force IPV4 perfered."); + dns_cache_release(dns_cache_A); + dns_cache_release(dns_cache); + return _dns_server_reply_SOA(DNS_RC_NOERROR, request); + } + } goto errout; }