From: Jelte Jansen Date: Mon, 29 Oct 2012 15:02:53 +0000 (+0100) Subject: [2213] command does not need own catch X-Git-Tag: trac2487_base~23^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=83a6c4414e87db481e684f8b6757182a5b8a2cae;p=thirdparty%2Fkea.git [2213] command does not need own catch --- diff --git a/src/bin/auth/command.cc b/src/bin/auth/command.cc index d9d7fb9067..89aee3ff93 100644 --- a/src/bin/auth/command.cc +++ b/src/bin/auth/command.cc @@ -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()); } }; diff --git a/src/bin/auth/datasrc_clients_mgr.h b/src/bin/auth/datasrc_clients_mgr.h index aaa14a155e..dde6dcaaf8 100644 --- a/src/bin/auth/datasrc_clients_mgr.h +++ b/src/bin/auth/datasrc_clients_mgr.h @@ -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); } diff --git a/src/bin/auth/tests/datasrc_clients_mgr_unittest.cc b/src/bin/auth/tests/datasrc_clients_mgr_unittest.cc index f74781c981..19eb44b3c2 100644 --- a/src/bin/auth/tests/datasrc_clients_mgr_unittest.cc +++ b/src/bin/auth/tests/datasrc_clients_mgr_unittest.cc @@ -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);