Previously, we would behave as if no such policy had been configured.
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
fname = ::arg()["lua-dnsupdate-policy-script"];
if (fname.empty())
{
+ d_update_policy_is_lua = false;
d_update_policy_lua = nullptr;
}
else
{
+ d_update_policy_is_lua = true;
try {
d_update_policy_lua = std::make_unique<AuthLua4>();
d_update_policy_lua->loadFile(fname);
bool d_doExpandALIAS;
bool d_doResolveAcrossZones;
bool d_dnssec{false};
+ bool d_update_policy_is_lua{false};
SOAData d_sd;
std::unique_ptr<AuthLua4> d_pdl;
std::unique_ptr<AuthLua4> d_update_policy_lua;
g_log << Logger::Info << ctx.msgPrefix << "Processing started." << endl;
// if there is policy, we delegate all checks to it
- if (this->d_update_policy_lua == nullptr) {
+ if (d_update_policy_is_lua) {
+ if (d_update_policy_lua == nullptr) {
+ // The policy failed to load earlier.
+ return RCode::Refused;
+ }
+ }
+ else {
if (!isUpdateAllowed(B, ctx, packet)) {
return RCode::Refused;
}