From: Remi Gacogne Date: Thu, 17 Aug 2023 09:19:15 +0000 (+0200) Subject: dnsdist: Properly record self-answered UDP responses with recvmmsg X-Git-Tag: dnsdist-1.8.1~20^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F13150%2Fhead;p=thirdparty%2Fpdns.git dnsdist: Properly record self-answered UDP responses with recvmmsg Responses sent directly from dnsdist, without reaching out to a backend (self-generated and cache hits answers, mostly) where not properly accounted for in frontend metrics, ring buffer entries and latency computation when recvmmsg/sendmmsg support was enabled via `setUDPMultipleMessagesVectorSize()`. (cherry picked from commit 3692220de3633434cb88556132cbb77255440ce3) --- diff --git a/pdns/dnsdist.cc b/pdns/dnsdist.cc index 7642b3a2d1..45de248c0a 100644 --- a/pdns/dnsdist.cc +++ b/pdns/dnsdist.cc @@ -1672,6 +1672,7 @@ static void processUDPQuery(ClientState& cs, LocalHolders& holders, const struct if (dq.ids.delayMsec == 0 && responsesVect != nullptr) { queueResponse(cs, query, dest, remote, responsesVect[*queuedResponses], respIOV, respCBuf); (*queuedResponses)++; + handleResponseSent(dq.ids.qname, dq.ids.qtype, 0., remote, ComboAddress(), query.size(), *dh, dnsdist::Protocol::DoUDP, dnsdist::Protocol::DoUDP, false); return; } #endif /* defined(HAVE_RECVMMSG) && defined(HAVE_SENDMMSG) && defined(MSG_WAITFORONE) */