From: Miod Vallat Date: Fri, 27 Jun 2025 06:31:46 +0000 (+0200) Subject: Sprinkle explicit DNSName casts in cache purge operations. X-Git-Tag: rec-5.3.0-alpha2~43^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ad714ed9b2970916506606afe24723a91a075af;p=thirdparty%2Fpdns.git Sprinkle explicit DNSName casts in cache purge operations. Signed-off-by: Miod Vallat --- diff --git a/modules/bindbackend/bindbackend2.cc b/modules/bindbackend/bindbackend2.cc index 102dd395d1..6f211491cd 100644 --- a/modules/bindbackend/bindbackend2.cc +++ b/modules/bindbackend/bindbackend2.cc @@ -647,7 +647,7 @@ string Bind2Backend::DLReloadNowHandler(const vector& parts, Utility::pi ret << *i << ": [missing]\n"; else ret << *i << ": " << (bbd.d_wasRejectedLastReload ? "[rejected]" : "") << "\t" << bbd.d_status << "\n"; - purgeAuthCaches(zone.toString() + "$"); + purgeAuthCaches(zone.operator const DNSName&().toString() + "$"); DNSSECKeeper::clearMetaCache(zone); } else diff --git a/pdns/auth-secondarycommunicator.cc b/pdns/auth-secondarycommunicator.cc index 2463d5d803..52890f5181 100644 --- a/pdns/auth-secondarycommunicator.cc +++ b/pdns/auth-secondarycommunicator.cc @@ -272,7 +272,7 @@ static bool catalogDiff(const DomainInfo& di, vector& fromXFR, vect } DNSSECKeeper::clearCaches(zone.first); - purgeAuthCaches(zone.first.toString() + "$"); + purgeAuthCaches(zone.first.operator const DNSName&().toString() + "$"); } // retrieve new and updated zones with new primaries @@ -776,7 +776,7 @@ void CommunicatorClass::suck(const ZoneName& domain, const ComboAddress& remote, } else { g_log << Logger::Warning << logPrefix << "got " << zs.numDeltas << " delta" << addS(zs.numDeltas) << ", zone committed with serial " << zs.soa_serial << endl; - purgeAuthCaches(domain.toString() + "$"); + purgeAuthCaches(domain.operator const DNSName&().toString() + "$"); return; } } @@ -954,7 +954,7 @@ void CommunicatorClass::suck(const ZoneName& domain, const ComboAddress& remote, di.backend->commitTransaction(); transaction = false; di.backend->setFresh(zs.domain_id); - purgeAuthCaches(domain.toString() + "$"); + purgeAuthCaches(domain.operator const DNSName&().toString() + "$"); g_log << Logger::Warning << logPrefix << "zone committed with serial " << zs.soa_serial << endl; diff --git a/pdns/rfc2136handler.cc b/pdns/rfc2136handler.cc index 53433b6739..d6c52dd0a1 100644 --- a/pdns/rfc2136handler.cc +++ b/pdns/rfc2136handler.cc @@ -1001,9 +1001,7 @@ int PacketHandler::processUpdate(DNSPacket& packet) { // NOLINT(readability-func d_dk.clearMetaCache(di.zone); // Purge the records! - string zone(di.zone.toString()); - zone.append("$"); - purgeAuthCaches(zone); + purgeAuthCaches(di.zone.operator const DNSName&().toString() + "$"); // Notify secondaries if (di.kind == DomainInfo::Primary) { diff --git a/pdns/ws-auth.cc b/pdns/ws-auth.cc index 52b50e3586..2b4c9216ca 100644 --- a/pdns/ws-auth.cc +++ b/pdns/ws-auth.cc @@ -2210,7 +2210,7 @@ static void apiServerZoneDetailPUT(HttpRequest* req, HttpResponse* resp) updateDomainSettingsFromDocument(zoneData.backend, zoneData.domainInfo, zoneData.zoneName, document, zoneWasModified); zoneData.domainInfo.backend->commitTransaction(); - purgeAuthCaches(zoneData.zoneName.toString() + "$"); + purgeAuthCaches(zoneData.zoneName.operator const DNSName&().toString() + "$"); resp->body = ""; resp->status = 204; // No Content, but indicate success @@ -2239,7 +2239,7 @@ static void apiServerZoneDetailDELETE(HttpRequest* req, HttpResponse* resp) // clear caches DNSSECKeeper::clearCaches(zoneData.zoneName); - purgeAuthCaches(zoneData.zoneName.toString() + "$"); + purgeAuthCaches(zoneData.zoneName.operator const DNSName&().toString() + "$"); // empty body on success resp->body = ""; @@ -2510,7 +2510,7 @@ static void patchZone(UeberBackend& backend, const ZoneName& zonename, DomainInf domainInfo.backend->commitTransaction(); DNSSECKeeper::clearCaches(zonename); - purgeAuthCaches(zonename.toString() + "$"); + purgeAuthCaches(zonename.operator const DNSName&().toString() + "$"); resp->body = ""; resp->status = 204; // No Content, but indicate success @@ -2644,7 +2644,7 @@ static void apiServerCacheFlush(HttpRequest* req, HttpResponse* resp) DNSSECKeeper::clearCaches(canon); // purge entire zone from cache, not just zone-level records. - uint64_t count = purgeAuthCaches(canon.toString() + "$"); + uint64_t count = purgeAuthCaches(canon.operator const DNSName&().toString() + "$"); resp->setJsonBody(Json::object{ {"count", (int)count}, {"result", "Flushed cache."}}); @@ -2759,8 +2759,7 @@ static void apiServerViewsPOST(HttpRequest* req, HttpResponse* resp) } // Purge packet cache for that zone if (PC.enabled()) { - // Note that this relies upon ZoneName::toString NOT emitting the variant name. - std::string purgename = zonename.toString(); + std::string purgename = zonename.operator const DNSName&().toString(); purgename.append("$"); (void)PC.purge(view, purgename); } @@ -2789,8 +2788,7 @@ static void apiServerViewsDELETE(HttpRequest* req, HttpResponse* resp) (void)PC.purgeView(view); } else { - // Note that this relies upon ZoneName::toString NOT emitting the variant name. - std::string purgename = zoneData.zoneName.toString(); + std::string purgename = zoneData.zoneName.operator const DNSName&().toString(); purgename.append("$"); (void)PC.purge(view, purgename); }