From 799114529470923a5e633dadc47b59c4e2a7e220 Mon Sep 17 00:00:00 2001 From: Otto Moerbeek Date: Wed, 10 Aug 2022 13:30:24 +0200 Subject: [PATCH] Clear the caches *after* loading authzones. --- pdns/reczones.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pdns/reczones.cc b/pdns/reczones.cc index a4b24972cc..a7516a7905 100644 --- a/pdns/reczones.cc +++ b/pdns/reczones.cc @@ -311,15 +311,18 @@ string reloadZoneConfiguration() } } - for (const auto& i : oldAndNewDomains) { - wipeCaches(i, true, 0xffff); - } - // these explicitly-named captures should not be necessary, as lambda // capture of tuple-like structured bindings is permitted, but some // compilers still don't allow it broadcastFunction([dm = newDomainMap] { return pleaseUseNewSDomainsMap(dm); }); broadcastFunction([ns = newNotifySet] { return pleaseSupplantAllowNotifyFor(ns); }); + + // Wipe the caches *after* the new auth domain info has been set + // up, as a query during setting up might fill the caches + // again. Old code did the clear before, exposing a race. + for (const auto& i : oldAndNewDomains) { + wipeCaches(i, true, 0xffff); + } return "ok\n"; } catch (const std::exception& e) { -- 2.47.2