]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Factor code responsible for serial increase. NFCI
authorMiod Vallat <miod.vallat@powerdns.com>
Fri, 13 Jun 2025 08:39:11 +0000 (10:39 +0200)
committerMiod Vallat <miod.vallat@powerdns.com>
Fri, 13 Jun 2025 08:39:11 +0000 (10:39 +0200)
pdns/ws-auth.cc

index f1d0bf90639945d801c99fa56b3c3453bca54fbb..9cbe0d5d7b8bce23571daed7cd88cc06bffd361f 100644 (file)
@@ -774,6 +774,18 @@ static void extractJsonTSIGKeyIds(UeberBackend& backend, const Json& jsonArray,
   }
 }
 
+// Wrapper around makeIncreasedSOARecord()
+static void updateZoneSerial(DomainInfo& domainInfo, SOAData& soaData, const std::string& increaseKind, const std::string& editKind)
+{
+  DNSResourceRecord resourceRecord;
+
+  if (makeIncreasedSOARecord(soaData, increaseKind, editKind, resourceRecord)) {
+    if (!domainInfo.backend->replaceRRSet(domainInfo.id, resourceRecord.qname, resourceRecord.qtype, vector<DNSResourceRecord>(1, resourceRecord))) {
+      throw ApiException("Hosting backend does not support editing records.");
+    }
+  }
+}
+
 // Must be called within backend transaction.
 static void updateDomainSettingsFromDocument(UeberBackend& backend, DomainInfo& domainInfo, const ZoneName& zonename, const Json& document, bool zoneWasModified)
 {
@@ -917,12 +929,7 @@ static void updateDomainSettingsFromDocument(UeberBackend& backend, DomainInfo&
       string soa_edit_kind;
       domainInfo.backend->getDomainMetadataOne(zonename, "SOA-EDIT", soa_edit_kind);
 
-      DNSResourceRecord resourceRecord;
-      if (makeIncreasedSOARecord(soaData, soa_edit_api_kind, soa_edit_kind, resourceRecord)) {
-        if (!domainInfo.backend->replaceRRSet(domainInfo.id, resourceRecord.qname, resourceRecord.qtype, vector<DNSResourceRecord>(1, resourceRecord))) {
-          throw ApiException("Hosting backend does not support editing records.");
-        }
-      }
+      updateZoneSerial(domainInfo, soaData, soa_edit_api_kind, soa_edit_kind);
     }
   }
 
@@ -2444,12 +2451,7 @@ static void patchZone(UeberBackend& backend, const ZoneName& zonename, DomainInf
       // return old serial in headers, before changing it
       resp->headers["X-PDNS-Old-Serial"] = std::to_string(soaData.serial);
 
-      DNSResourceRecord resourceRecord;
-      if (makeIncreasedSOARecord(soaData, soa_edit_api_kind, soa_edit_kind, resourceRecord)) {
-        if (!domainInfo.backend->replaceRRSet(domainInfo.id, resourceRecord.qname, resourceRecord.qtype, vector<DNSResourceRecord>(1, resourceRecord))) {
-          throw ApiException("Hosting backend does not support editing records.");
-        }
-      }
+      updateZoneSerial(domainInfo, soaData, soa_edit_api_kind, soa_edit_kind);
 
       // return new serial in headers
       resp->headers["X-PDNS-New-Serial"] = std::to_string(soaData.serial);