From 7aba7844135cdaa1ca8732e48d17a7e02b432690 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Tue, 25 Mar 2025 10:55:10 +0100 Subject: [PATCH] dnsdist: Do not register Xsk sockets on configuration check or client mode It does not make sense, and in some cases might lead to a crash because the Xsk socket is actually an empty shared pointer in client mode. (cherry picked from commit bbd1a19e0194aabdd745c5196e1eaeb196d7e196) --- pdns/dnsdist-lua.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pdns/dnsdist-lua.cc b/pdns/dnsdist-lua.cc index f9b972acb1..92fe2be56e 100644 --- a/pdns/dnsdist-lua.cc +++ b/pdns/dnsdist-lua.cc @@ -642,7 +642,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) auto ret = std::make_shared(std::move(config), std::move(tlsCtx), !(client || configCheck)); #ifdef HAVE_XSK LuaArray> luaXskSockets; - if (getOptionalValue>>(vars, "xskSockets", luaXskSockets) > 0 && !luaXskSockets.empty()) { + if (!client && !configCheck && getOptionalValue>>(vars, "xskSockets", luaXskSockets) > 0 && !luaXskSockets.empty()) { if (g_configurationDone) { throw std::runtime_error("Adding a server with xsk at runtime is not supported"); } @@ -668,6 +668,13 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) else if (!(client || configCheck)) { infolog("Added downstream server %s", ret->d_config.remote.toStringWithPort()); } + + if (client || configCheck) { + /* consume these in client or configuration check mode, to prevent warnings */ + std::string mac; + getOptionalValue(vars, "MACAddr", mac); + getOptionalValue>>(vars, "xskSockets", luaXskSockets); + } #else /* HAVE_XSK */ if (!(client || configCheck)) { infolog("Added downstream server %s", ret->d_config.remote.toStringWithPort()); -- 2.47.2