]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Properly record self-answered UDP responses with recvmmsg 13150/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:23:36 +0000 (11:23 +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()`.

(cherry picked from commit 3692220de3633434cb88556132cbb77255440ce3)

pdns/dnsdist.cc

index 7642b3a2d139d530a2cc64c34f28e87961e18b4c..45de248c0a4e1183329c739bb28be0d0f47859af 100644 (file)
@@ -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) */