From: Remi Gacogne Date: Tue, 5 Dec 2023 14:50:52 +0000 (+0100) Subject: dnsdist: Fix clang-tidy warnings X-Git-Tag: dnsdist-1.9.0-alpha4~15^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c3a86a30ab90d3b72544e1c25f7a7e52edd6c330;p=thirdparty%2Fpdns.git dnsdist: Fix clang-tidy warnings --- diff --git a/pdns/dnsdist-lua.cc b/pdns/dnsdist-lua.cc index f20210d210..34edc70311 100644 --- a/pdns/dnsdist-lua.cc +++ b/pdns/dnsdist-lua.cc @@ -2650,11 +2650,11 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) checkAllParametersConsumed("addDOH3Local", vars); } g_doh3locals.push_back(frontend); - auto cs = std::make_unique(frontend->d_local, false, reusePort, tcpFastOpenQueueSize, interface, cpus); - cs->doh3Frontend = frontend; - cs->d_additionalAddresses = std::move(additionalAddresses); + auto clientState = std::make_unique(frontend->d_local, false, reusePort, tcpFastOpenQueueSize, interface, cpus); + clientState->doh3Frontend = frontend; + clientState->d_additionalAddresses = std::move(additionalAddresses); - g_frontends.push_back(std::move(cs)); + g_frontends.push_back(std::move(clientState)); #else throw std::runtime_error("addDOH3Local() called but DNS over HTTP/3 support is not present!"); #endif diff --git a/pdns/dnsdist.cc b/pdns/dnsdist.cc index dd616a7d33..3b1fb0735e 100644 --- a/pdns/dnsdist.cc +++ b/pdns/dnsdist.cc @@ -2869,6 +2869,80 @@ static void initFrontends() } } +namespace dnsdist +{ +static void startFrontends() +{ + std::vector tcpStates; + std::vector udpStates; + for (auto& cs : g_frontends) { + if (cs->dohFrontend != nullptr && cs->dohFrontend->d_library == "h2o") { +#ifdef HAVE_DNS_OVER_HTTPS +#ifdef HAVE_LIBH2OEVLOOP + std::thread dotThreadHandle(dohThread, cs.get()); + if (!cs->cpus.empty()) { + mapThreadToCPUList(dotThreadHandle.native_handle(), cs->cpus); + } + dotThreadHandle.detach(); +#endif /* HAVE_LIBH2OEVLOOP */ +#endif /* HAVE_DNS_OVER_HTTPS */ + continue; + } + if (cs->doqFrontend != nullptr) { +#ifdef HAVE_DNS_OVER_QUIC + std::thread doqThreadHandle(doqThread, cs.get()); + if (!cs->cpus.empty()) { + mapThreadToCPUList(doqThreadHandle.native_handle(), cs->cpus); + } + doqThreadHandle.detach(); +#endif /* HAVE_DNS_OVER_QUIC */ + continue; + } + if (cs->doh3Frontend != nullptr) { +#ifdef HAVE_DNS_OVER_HTTP3 + std::thread doh3ThreadHandle(doh3Thread, cs.get()); + if (!cs->cpus.empty()) { + mapThreadToCPUList(doh3ThreadHandle.native_handle(), cs->cpus); + } + doh3ThreadHandle.detach(); +#endif /* HAVE_DNS_OVER_HTTP3 */ + continue; + } + if (cs->udpFD >= 0) { +#ifdef USE_SINGLE_ACCEPTOR_THREAD + udpStates.push_back(cs.get()); +#else /* USE_SINGLE_ACCEPTOR_THREAD */ + std::thread udpClientThreadHandle(udpClientThread, std::vector{ cs.get() }); + if (!cs->cpus.empty()) { + mapThreadToCPUList(udpClientThreadHandle.native_handle(), cs->cpus); + } + udpClientThreadHandle.detach(); +#endif /* USE_SINGLE_ACCEPTOR_THREAD */ + } + else if (cs->tcpFD >= 0) { +#ifdef USE_SINGLE_ACCEPTOR_THREAD + tcpStates.push_back(cs.get()); +#else /* USE_SINGLE_ACCEPTOR_THREAD */ + std::thread tcpAcceptorThreadHandle(tcpAcceptorThread, std::vector{cs.get() }); + if (!cs->cpus.empty()) { + mapThreadToCPUList(tcpAcceptorThreadHandle.native_handle(), cs->cpus); + } + tcpAcceptorThreadHandle.detach(); +#endif /* USE_SINGLE_ACCEPTOR_THREAD */ + } + } +#ifdef USE_SINGLE_ACCEPTOR_THREAD + if (!udpStates.empty()) { + std::thread udpThreadHandle(udpClientThread, udpStates); + udpThreadHandle.detach(); + } + if (!tcpStates.empty()) { + g_tcpclientthreads = std::make_unique(1, tcpStates); + } +#endif /* USE_SINGLE_ACCEPTOR_THREAD */ +} +} + int main(int argc, char** argv) { try { @@ -3075,73 +3149,8 @@ int main(int argc, char** argv) handleQueuedHealthChecks(*mplexer, true); } - std::vector tcpStates; - std::vector udpStates; - for (auto& cs : g_frontends) { - if (cs->dohFrontend != nullptr && cs->dohFrontend->d_library == "h2o") { -#ifdef HAVE_DNS_OVER_HTTPS -#ifdef HAVE_LIBH2OEVLOOP - std::thread t1(dohThread, cs.get()); - if (!cs->cpus.empty()) { - mapThreadToCPUList(t1.native_handle(), cs->cpus); - } - t1.detach(); -#endif /* HAVE_LIBH2OEVLOOP */ -#endif /* HAVE_DNS_OVER_HTTPS */ - continue; - } - if (cs->doqFrontend != nullptr) { -#ifdef HAVE_DNS_OVER_QUIC - std::thread t1(doqThread, cs.get()); - if (!cs->cpus.empty()) { - mapThreadToCPUList(t1.native_handle(), cs->cpus); - } - t1.detach(); -#endif /* HAVE_DNS_OVER_QUIC */ - continue; - } - if (cs->doh3Frontend != nullptr) { -#ifdef HAVE_DNS_OVER_HTTP3 - std::thread t1(doh3Thread, cs.get()); - if (!cs->cpus.empty()) { - mapThreadToCPUList(t1.native_handle(), cs->cpus); - } - t1.detach(); -#endif /* HAVE_DNS_OVER_HTTP3 */ - continue; - } - if (cs->udpFD >= 0) { -#ifdef USE_SINGLE_ACCEPTOR_THREAD - udpStates.push_back(cs.get()); -#else /* USE_SINGLE_ACCEPTOR_THREAD */ - thread t1(udpClientThread, std::vector{ cs.get() }); - if (!cs->cpus.empty()) { - mapThreadToCPUList(t1.native_handle(), cs->cpus); - } - t1.detach(); -#endif /* USE_SINGLE_ACCEPTOR_THREAD */ - } - else if (cs->tcpFD >= 0) { -#ifdef USE_SINGLE_ACCEPTOR_THREAD - tcpStates.push_back(cs.get()); -#else /* USE_SINGLE_ACCEPTOR_THREAD */ - thread t1(tcpAcceptorThread, std::vector{cs.get() }); - if (!cs->cpus.empty()) { - mapThreadToCPUList(t1.native_handle(), cs->cpus); - } - t1.detach(); -#endif /* USE_SINGLE_ACCEPTOR_THREAD */ - } - } -#ifdef USE_SINGLE_ACCEPTOR_THREAD - if (!udpStates.empty()) { - thread udp(udpClientThread, udpStates); - udp.detach(); - } - if (!tcpStates.empty()) { - g_tcpclientthreads = std::make_unique(1, tcpStates); - } -#endif /* USE_SINGLE_ACCEPTOR_THREAD */ + dnsdist::startFrontends(); + dnsdist::ServiceDiscovery::run(); #ifndef DISABLE_CARBON