From: Remi Gacogne Date: Tue, 6 Feb 2024 15:22:49 +0000 (+0100) Subject: dnsdist: Clear the Lua maintenance callbacks before exiting X-Git-Tag: dnsdist-1.9.0~9^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7bee5ded28ccb606f9832e4eea093efee222816e;p=thirdparty%2Fpdns.git dnsdist: Clear the Lua maintenance callbacks before exiting --- diff --git a/pdns/dnsdist.cc b/pdns/dnsdist.cc index 086765d182..f30ee44f21 100644 --- a/pdns/dnsdist.cc +++ b/pdns/dnsdist.cc @@ -2737,6 +2737,7 @@ static void cleanupLuaObjects() g_policy.setState(ServerPolicy()); g_pools.setState({}); clearWebHandlers(); + dnsdist::lua::hooks::clearMaintenanceHook(); } static void sigTermHandler(int) diff --git a/pdns/dnsdistdist/dnsdist-lua-hooks.cc b/pdns/dnsdistdist/dnsdist-lua-hooks.cc index 2b1814a4c5..0044417b95 100644 --- a/pdns/dnsdistdist/dnsdist-lua-hooks.cc +++ b/pdns/dnsdistdist/dnsdist-lua-hooks.cc @@ -21,6 +21,11 @@ void addMaintenanceCallback(const LuaContext& context, MaintenanceCallback callb s_maintenanceHook.lock()->push_back(std::move(callback)); } +void clearMaintenanceHook() +{ + s_maintenanceHook.lock()->clear(); +} + void setupLuaHooks(LuaContext& luaCtx) { luaCtx.writeFunction("addMaintenanceCallback", [&luaCtx](const MaintenanceCallback& callback) { diff --git a/pdns/dnsdistdist/dnsdist-lua-hooks.hh b/pdns/dnsdistdist/dnsdist-lua-hooks.hh index 573ab95b89..993d3a9c42 100644 --- a/pdns/dnsdistdist/dnsdist-lua-hooks.hh +++ b/pdns/dnsdistdist/dnsdist-lua-hooks.hh @@ -30,5 +30,6 @@ namespace dnsdist::lua::hooks using MaintenanceCallback = std::function; void runMaintenanceHook(const LuaContext& context); void addMaintenanceCallback(MaintenanceCallback callback); +void clearMaintenanceHook(); void setupLuaHooks(LuaContext& luaCtx); }