From 7bee5ded28ccb606f9832e4eea093efee222816e Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Tue, 6 Feb 2024 16:22:49 +0100 Subject: [PATCH] dnsdist: Clear the Lua maintenance callbacks before exiting --- pdns/dnsdist.cc | 1 + pdns/dnsdistdist/dnsdist-lua-hooks.cc | 5 +++++ pdns/dnsdistdist/dnsdist-lua-hooks.hh | 1 + 3 files changed, 7 insertions(+) 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); } -- 2.47.3