From 8b8c6fca4e44daf64a9d9728c3590c49c14b3e67 Mon Sep 17 00:00:00 2001 From: dmiller Date: Thu, 16 May 2024 19:31:45 +0000 Subject: [PATCH] mass_dns: Correctly handle write errors/timeouts --- nmap_dns.cc | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/nmap_dns.cc b/nmap_dns.cc index f88e37334..bd44a3262 100644 --- a/nmap_dns.cc +++ b/nmap_dns.cc @@ -474,17 +474,26 @@ static void do_possible_writes() { // nsock write handler static void write_evt_handler(nsock_pool nsp, nsock_event evt, void *req_v) { + assert(nse_type(evt) == NSE_TYPE_WRITE); info record; request *req = (request *) req_v; req->curr_server->write_busy = 0; - req->curr_server->in_process.push_front(req); - record.tpreq = req; - record.server = req->curr_server; - records[req->id] = record; + if (nse_status(evt) == NSE_STATUS_SUCCESS) { + req->curr_server->in_process.push_front(req); + record.tpreq = req; + record.server = req->curr_server; + records[req->id] = record; + do_possible_writes(); + } + else { + if (o.debugging) { + log_write(LOG_STDOUT, "mass_dns: WRITE error: %s", nse_status2str(nse_status(evt))); + } + req->curr_server->to_process.push_front(req); + } - do_possible_writes(); } static DNS::RECORD_TYPE wire_type(DNS::RECORD_TYPE t) {