]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
On second thought, relax the zone check for the view add operation too. 16360/head
authorMiod Vallat <miod.vallat@powerdns.com>
Thu, 23 Oct 2025 06:24:47 +0000 (08:24 +0200)
committerMiod Vallat <miod.vallat@powerdns.com>
Thu, 23 Oct 2025 11:56:07 +0000 (13:56 +0200)
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
(cherry picked from commit d6f700a88b9038298ac55023a7eb5bc66a8eb575)

pdns/ws-auth.cc

index 51664fdeba6708fff554033079d0185b225ba9cc..e3de1d2abea3a7f44d8953e8ba21bd4b32c7f7a2 100644 (file)
@@ -2742,17 +2742,15 @@ static void apiServerViewsGET(HttpRequest* req, HttpResponse* resp)
 // POST /views/<view> + name in json adds ZoneName "name" to view "view"
 static void apiServerViewsPOST(HttpRequest* req, HttpResponse* resp)
 {
-  UeberBackend backend;
-  DomainInfo domainInfo;
   const auto& document = req->json();
+  // We can't use a ZoneData object here, as the zone being added to the
+  // view may not exist yet.
   ZoneName zonename = apiNameToZoneName(stringFromJson(document, "name"));
 
-  if (!backend.getDomainInfo(zonename, domainInfo)) {
-    throw ApiException("Zone " + zonename.toString() + " does not exist");
-  }
   std::string view{req->parameters["view"]};
 
-  if (!domainInfo.backend->viewAddZone(view, zonename)) {
+  UeberBackend backend;
+  if (!backend.viewAddZone(view, zonename)) {
     throw ApiException("Failed to add " + zonename.toString() + " to view " + view);
   }
   // Notify zone cache of the new association
@@ -2776,6 +2774,7 @@ static void apiServerViewsDELETE(HttpRequest* req, HttpResponse* resp)
   // We can't use a ZoneData object here, as the zone being removed from the
   // view may no longer exist.
   ZoneName zoneName(apiZoneIdToName(req->parameters["id"]));
+
   std::string view{req->parameters["view"]};
 
   UeberBackend backend;