]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Properly record self-answered UDP responses with recvmmsg 13149/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 17 Aug 2023 09:19:15 +0000 (11:19 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 17 Aug 2023 09:19:15 +0000 (11:19 +0200)
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()`.

pdns/dnsdist.cc

index 62fef05a2e3cbfc15f017ef817beaab70ed787ac..4f27e84043b53291958d75bd456ccc2743da78d7 100644 (file)
@@ -1688,6 +1688,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) */