From: Otto Moerbeek Date: Tue, 8 Oct 2024 07:49:48 +0000 (+0200) Subject: Small refactor: split out forwarding cat zone code from xfr code X-Git-Tag: rec-5.2.0-alpha1~7^2~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4ea90f9d11c806cfa1bd7d9574a38d0ef271f93d;p=thirdparty%2Fpdns.git Small refactor: split out forwarding cat zone code from xfr code In an ideal world we should share the xfr code between RPZ and catz, but that is for a later day. --- diff --git a/pdns/recursordist/rec-main.cc b/pdns/recursordist/rec-main.cc index 974414a3a9..3e9b60b081 100644 --- a/pdns/recursordist/rec-main.cc +++ b/pdns/recursordist/rec-main.cc @@ -3432,7 +3432,7 @@ void startLuaConfigDelayedThreads(const LuaConfigItems& luaConfig, uint64_t gene try { // ZoneXFRTracker uses call by value for its args. That is essential, since we want copies so // that ZoneXFRTracker gets values with the proper lifetime. - std::thread theThread(ZoneXFR::zoneXFRTracker, fcz.d_params, generation); + std::thread theThread(FWCatZoneXFR::zoneXFRTracker, fcz.d_params, generation); theThread.detach(); } catch (const std::exception& e) { diff --git a/pdns/recursordist/rec-xfr.cc b/pdns/recursordist/rec-xfr.cc index 265617cb4f..1273d5a734 100644 --- a/pdns/recursordist/rec-xfr.cc +++ b/pdns/recursordist/rec-xfr.cc @@ -231,7 +231,7 @@ static shared_ptr loadZoneFromServer(Logr::log_t plogger return soaRecordContent; } -void ZoneXFR::preloadZoneFile(const DNSName& zoneName, std::shared_ptr& oldZone, uint32_t& refresh, uint64_t configGeneration, ZoneWaiter& waiter, Logr::log_t logger) +void FWCatZoneXFR::preloadZoneFile(const DNSName& zoneName, std::shared_ptr& oldZone, uint32_t& refresh, uint64_t configGeneration, ZoneWaiter& waiter, Logr::log_t logger) { while (!d_params.soaRecordContent) { /* if we received an empty sr, the zone was not really preloaded */ @@ -283,7 +283,7 @@ void ZoneXFR::preloadZoneFile(const DNSName& zoneName, std::shared_ptr& oldZone, uint32_t& refresh, bool& skipRefreshDelay, uint64_t configGeneration, ZoneWaiter& waiter, Logr::log_t logger) +bool FWCatZoneXFR::zoneTrackerIteration(const DNSName& zoneName, std::shared_ptr& oldZone, uint32_t& refresh, bool& skipRefreshDelay, uint64_t configGeneration, ZoneWaiter& waiter, Logr::log_t logger) { // Don't hold on to oldZone, it well be re-assigned after sleep in the try block oldZone = nullptr; @@ -458,7 +458,7 @@ bool ZoneXFR::zoneTrackerIteration(const DNSName& zoneName, std::shared_ptr& oldZone, uint32_t& refresh, uint64_t configGeneration, ZoneWaiter& waiter, Logr::log_t logger); - bool zoneTrackerIteration(const DNSName& zoneName, std::shared_ptr& oldZone, uint32_t& refresh, bool& skipRefreshDelay, uint64_t configGeneration, ZoneWaiter& waiter, Logr::log_t logger); ZoneXFRParams d_params; @@ -147,4 +143,17 @@ private: static LockGuarded> condVars; }; +class FWCatZoneXFR : ZoneXFR +{ +public: + FWCatZoneXFR(ZoneXFRParams params) : + ZoneXFR(std::move(params)) + {} + + static void zoneXFRTracker(ZoneXFRParams params, uint64_t configGeneration); +private: + void preloadZoneFile(const DNSName& zoneName, std::shared_ptr& oldZone, uint32_t& refresh, uint64_t configGeneration, ZoneWaiter& waiter, Logr::log_t logger); + bool zoneTrackerIteration(const DNSName& zoneName, std::shared_ptr& oldZone, uint32_t& refresh, bool& skipRefreshDelay, uint64_t configGeneration, ZoneWaiter& waiter, Logr::log_t logger); +}; + std::string reloadZoneConfiguration(bool yaml);