ProcessQueryResult processQueryAfterRules(DNSQuestion& dnsQuestion, std::shared_ptr<DownstreamState>& outgoingBackend)
{
+ const auto sendAnswer = [](DNSQuestion& dnsQ) -> ProcessQueryResult{
+ ++dnsdist::metrics::g_stats.responses;
+ ++dnsQ.ids.cs->responses;
+ return ProcessQueryResult::SendAnswer;
+ };
const uint16_t queryId = ntohs(dnsQuestion.getHeader()->id);
try {
return ProcessQueryResult::Drop;
}
- ++dnsdist::metrics::g_stats.responses;
- ++dnsQuestion.ids.cs->responses;
- return ProcessQueryResult::SendAnswer;
+ return sendAnswer(dnsQuestion);
}
if (!dnsQuestion.ids.subnet) {
return ProcessQueryResult::Drop;
}
- ++dnsdist::metrics::g_stats.responses;
- ++dnsQuestion.ids.cs->responses;
- return ProcessQueryResult::SendAnswer;
+ return sendAnswer(dnsQuestion);
}
if (dnsQuestion.ids.protocol == dnsdist::Protocol::DoH && willBeForwardedOverUDP) {
/* do a second-lookup for responses received over UDP, but we do not want TC=1 answers */
return ProcessQueryResult::Drop;
}
- ++dnsdist::metrics::g_stats.responses;
- ++dnsQuestion.ids.cs->responses;
- return ProcessQueryResult::SendAnswer;
+ return sendAnswer(dnsQuestion);
}
}
if (!prepareOutgoingResponse(*dnsQuestion.ids.cs, dnsQuestion, false)) {
return ProcessQueryResult::Drop;
}
- ++dnsdist::metrics::g_stats.responses;
- ++dnsQuestion.ids.cs->responses;
- // no response-only statistics counter to update.
- return ProcessQueryResult::SendAnswer;
+ return sendAnswer(dnsQuestion);
}
return ProcessQueryResult::Drop;