]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2213] command does not need own catch
authorJelte Jansen <jelte@isc.org>
Mon, 29 Oct 2012 15:02:53 +0000 (16:02 +0100)
committerJelte Jansen <jelte@isc.org>
Mon, 29 Oct 2012 15:02:53 +0000 (16:02 +0100)
src/bin/auth/command.cc
src/bin/auth/datasrc_clients_mgr.h
src/bin/auth/tests/datasrc_clients_mgr_unittest.cc

index d9d7fb906768b2cefcd4e0132955d06dda111fd8..89aee3ff931835a9040a513ebfc934d9e429caf2 100644 (file)
@@ -176,12 +176,8 @@ public:
     virtual ConstElementPtr exec(AuthSrv& server,
                                  isc::data::ConstElementPtr args)
     {
-        try {
-            server.loadZone(args);
-            return (createAnswer());
-        } catch (const LoadZoneCommandError& lzce) {
-            return (createAnswer(1, lzce.what()));
-        }
+        server.loadZone(args);
+        return (createAnswer());
     }
 };
 
index aaa14a155ec8b68bf2cd438877e9093d7111ef2b..dde6dcaaf8b587a6065de72b9bb56befd97185fa 100644 (file)
@@ -267,6 +267,15 @@ public:
             isc_throw(LoadZoneCommandError,
                       "loadZone argument has no 'origin' value");
         }
+        if (args->get("origin")->getType() != data::Element::string) {
+            isc_throw(LoadZoneCommandError,
+                      "loadZone argument 'origin' value not a string");
+        }
+        if (args->contains("class") &&
+            args->get("class")->getType() != data::Element::string) {
+            isc_throw(LoadZoneCommandError,
+                      "loadZone argument 'class' value not a string");
+        }
 
         sendCommand(datasrc_clientmgr_internal::LOADZONE, args);
     }
index f74781c981eeaf436776a53fb80b7c59878c45dc..19eb44b3c27d9475af410b38d29a38cb7e75ccbd 100644 (file)
@@ -209,6 +209,11 @@ TEST(DataSrcClientsMgrTest, reload) {
     mgr.loadZone(args);
     EXPECT_EQ(2, FakeDataSrcClientsBuilder::command_queue->size());
 
+    // Should fail with non-string 'class' value
+    args->set("class", Element::create(1));
+    EXPECT_THROW(mgr.loadZone(args), LoadZoneCommandError);
+    EXPECT_EQ(2, FakeDataSrcClientsBuilder::command_queue->size());
+
     // Should succeed without 'class'
     args->remove("class");
     mgr.loadZone(args);
@@ -219,6 +224,11 @@ TEST(DataSrcClientsMgrTest, reload) {
     EXPECT_THROW(mgr.loadZone(args), LoadZoneCommandError);
     EXPECT_EQ(3, FakeDataSrcClientsBuilder::command_queue->size());
 
+    // And for 'origin' that is not a string
+    args->set("origin", Element::create(1));
+    EXPECT_THROW(mgr.loadZone(args), LoadZoneCommandError);
+    EXPECT_EQ(3, FakeDataSrcClientsBuilder::command_queue->size());
+
     // same for empty data and data that is not a map
     EXPECT_THROW(mgr.loadZone(isc::data::ConstElementPtr()),
                               LoadZoneCommandError);