]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Sprinkle explicit DNSName casts in cache purge operations.
authorMiod Vallat <miod.vallat@powerdns.com>
Fri, 27 Jun 2025 06:31:46 +0000 (08:31 +0200)
committerMiod Vallat <miod.vallat@powerdns.com>
Fri, 27 Jun 2025 06:43:27 +0000 (08:43 +0200)
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
modules/bindbackend/bindbackend2.cc
pdns/auth-secondarycommunicator.cc
pdns/rfc2136handler.cc
pdns/ws-auth.cc

index 102dd395d107f503a2c664c2b1bcd3afe08f2806..6f211491cd50e802d6606dea818a4fef081b867f 100644 (file)
@@ -647,7 +647,7 @@ string Bind2Backend::DLReloadNowHandler(const vector<string>& 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
index 2463d5d803ed9ea2a9b544e45a1629cfe0cf5539..52890f51812725b4319a5986c81dc2dcd22beef7 100644 (file)
@@ -272,7 +272,7 @@ static bool catalogDiff(const DomainInfo& di, vector<CatalogInfo>& 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;
 
index 53433b6739000c2d869a08808da05fa5c4aaa2a7..d6c52dd0a142b046593149642bae27c4a65b35df 100644 (file)
@@ -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) {
index 52b50e35863dd6ca8d5df2361311cfa645076680..2b4c9216ca85e63f25bb97a443af315d4403714b 100644 (file)
@@ -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);
     }