From 1e964d30f5f181577379bfd12958c052ad774ea9 Mon Sep 17 00:00:00 2001 From: dmiller Date: Thu, 16 May 2024 19:31:46 +0000 Subject: [PATCH] Correctly treat A queries as alt for -6 scans, AAAA alt for -4 --- nmap_dns.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/nmap_dns.cc b/nmap_dns.cc index 0c2cfef8f..85a5c9072 100644 --- a/nmap_dns.cc +++ b/nmap_dns.cc @@ -645,6 +645,16 @@ static int deal_with_timedout_reads(bool adjust_timing) { } +static bool is_primary_req(const request *req) { + if (req->alt_req) { + return (o.af() == AF_INET6); + } + else if (req->targ->type == DNS::ANY) { + return (o.af() == AF_INET); + } + return true; +} + static void process_request(int action, info &reqinfo) { request *tpreq = reqinfo.tpreq; dns_server *server = reqinfo.server; @@ -660,7 +670,7 @@ static void process_request(int action, info &reqinfo) { server->in_process.remove(tpreq); server->reqs_on_wire--; total_reqs--; - if (action == ACTION_SYSTEM_RESOLVE && !tpreq->alt_req) { + if (action == ACTION_SYSTEM_RESOLVE && is_primary_req(tpreq)) { deferred_reqs.push_back(tpreq); } else {