From: Remi Gacogne Date: Thu, 26 Jun 2025 12:21:38 +0000 (+0200) Subject: dnsdist: Reduce the complexity of the YAML frontend code X-Git-Tag: dnsdist-2.1.0-alpha0~3^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d64936e33c62fda11e5b5cd2832b2daefae67b26;p=thirdparty%2Fpdns.git dnsdist: Reduce the complexity of the YAML frontend code Signed-off-by: Remi Gacogne --- diff --git a/pdns/dnsdistdist/dnsdist-configuration-yaml.cc b/pdns/dnsdistdist/dnsdist-configuration-yaml.cc index 184e92aae1..65db4d389b 100644 --- a/pdns/dnsdistdist/dnsdist-configuration-yaml.cc +++ b/pdns/dnsdistdist/dnsdist-configuration-yaml.cc @@ -663,6 +663,25 @@ static void loadDynamicBlockConfiguration(const dnsdist::rust::settings::Dynamic } } +static void handleAdditionalAddressesForFrontend(const std::shared_ptr& state, const std::string& protocol, const ::rust::Vec<::rust::String>& additionalAddresses) +{ + if (protocol == "dot" || protocol == "doh") { + for (const auto& addr : additionalAddresses) { + try { + ComboAddress address{std::string(addr)}; + state->d_additionalAddresses.emplace_back(address, -1); + } + catch (const PDNSException& e) { + errlog("Unable to parse additional address %s for %s bind: %s", std::string(addr), protocol, e.reason); + } + } + } + else if (!additionalAddresses.empty()) { + throw std::runtime_error("Passing a non-empty additional_addresses value to a " + protocol + " frontend is not supported"); + } +} + + static void loadBinds(const ::rust::Vec& binds) { for (const auto& bind : binds) { @@ -706,20 +725,7 @@ static void loadBinds(const ::rust::Vecd_tcpConcurrentConnectionsLimit = bind.tcp.max_concurrent_connections; } - if (protocol == "dot" || protocol == "doh") { - for (const auto& addr : bind.additional_addresses) { - try { - ComboAddress address{std::string(addr)}; - state->d_additionalAddresses.emplace_back(address, -1); - } - catch (const PDNSException& e) { - errlog("Unable to parse additional address %s for %s bind: %s", std::string(addr), protocol, e.reason); - } - } - } - else if (!bind.additional_addresses.empty()) { - throw std::runtime_error("Passing a non-empty additional_addresses value to a " + protocol + " frontend is not supported"); - } + handleAdditionalAddressesForFrontend(state, protocol, bind.additional_addresses); if (protocol == "dnscrypt") { #if defined(HAVE_DNSCRYPT)