From: Remi Gacogne Date: Mon, 10 Nov 2025 12:36:34 +0000 (+0100) Subject: dnsdist: Better error handling when a policy name cannot be found X-Git-Tag: rec-5.4.0-alpha1~91^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=88bec15755f91a51bf5e6f371f1e1c45b492cb70;p=thirdparty%2Fpdns.git dnsdist: Better error handling when a policy name cannot be found Signed-off-by: Remi Gacogne --- diff --git a/pdns/dnsdistdist/dnsdist-configuration-yaml.cc b/pdns/dnsdistdist/dnsdist-configuration-yaml.cc index 87cbea697a..c31033b3e3 100644 --- a/pdns/dnsdistdist/dnsdist-configuration-yaml.cc +++ b/pdns/dnsdistdist/dnsdist-configuration-yaml.cc @@ -1209,6 +1209,9 @@ bool loadConfigurationFromFile(const std::string& fileName, [[maybe_unused]] boo if (!globalConfig.load_balancing_policies.default_policy.empty()) { auto policy = getRegisteredTypeByName(globalConfig.load_balancing_policies.default_policy); + if (!policy) { + throw std::runtime_error("Unable to find a load-balancing policy named " + std::string(globalConfig.load_balancing_policies.default_policy)); + } dnsdist::configuration::updateRuntimeConfiguration([&policy](dnsdist::configuration::RuntimeConfiguration& config) { config.d_lbPolicy = std::move(policy); }); @@ -1225,7 +1228,11 @@ bool loadConfigurationFromFile(const std::string& fileName, [[maybe_unused]] boo poolIt->second.packetCache = getRegisteredTypeByName(pool.packet_cache); } if (!pool.policy.empty()) { - poolIt->second.policy = getRegisteredTypeByName(pool.policy); + auto policy = getRegisteredTypeByName(pool.policy); + if (!policy) { + throw std::runtime_error("Unable to find a load-balancing policy named " + std::string(pool.policy)); + } + poolIt->second.policy = policy; } poolIt->second.setECS(pool.use_ecs); poolIt->second.setZeroScope(pool.use_zero_scope);