]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2692] Checkpoint: code done, need UT
authorFrancis Dupont <fdupont@isc.org>
Tue, 5 Mar 2024 08:51:03 +0000 (09:51 +0100)
committerFrancis Dupont <fdupont@isc.org>
Wed, 20 Mar 2024 20:06:10 +0000 (21:06 +0100)
src/bin/dhcp4/ctrl_dhcp4_srv.cc
src/bin/dhcp6/ctrl_dhcp6_srv.cc

index 90dc449964fe179b5fa0cc013bb116308f87f1a5..ed0278fa8b38ed15d8feca558cddeadda13baba6 100644 (file)
@@ -1077,6 +1077,7 @@ ControlledDhcpv4Srv::processConfig(isc::data::ConstElementPtr config) {
     } catch (const std::exception& ex) {
         err << "Error initializing the lease allocators: "
             << ex.what();
+        return (isc::config::createAnswer(CONTROL_RESULT_ERROR, err.str()));
     }
 
     // Apply multi threading settings.
@@ -1091,6 +1092,15 @@ ControlledDhcpv4Srv::processConfig(isc::data::ConstElementPtr config) {
         return (isc::config::createAnswer(CONTROL_RESULT_ERROR, err.str()));
     }
 
+    /// Let postponed hook initializations to run.
+    try {
+        ControlledDhcpv4Srv::getInstance()->getIOService()->poll();
+    } catch (const std::exception& ex) {
+        err << "Error initializing hooks: "
+            << ex.what();
+        return (isc::config::createAnswer(CONTROL_RESULT_ERROR, err.str()));
+    }
+
     return (answer);
 }
 
index fe4200a682cd22fedb1ab08e1e200d700966fc07..cda7f8b87b3f8132fc42b660bc845788b3f38fbf 100644 (file)
@@ -1095,7 +1095,9 @@ ControlledDhcpv6Srv::processConfig(isc::data::ConstElementPtr config) {
         CfgMgr::instance().getStagingCfg()->getCfgSubnets6()->initAllocatorsAfterConfigure();
 
     } catch (const std::exception& ex) {
-        err << "Error initializing the lease allocators: " << ex.what();
+        err << "Error initializing the lease allocators: "
+            << ex.what();
+        return (isc::config::createAnswer(CONTROL_RESULT_ERROR, err.str()));
     }
 
     // Apply multi threading settings.
@@ -1110,6 +1112,15 @@ ControlledDhcpv6Srv::processConfig(isc::data::ConstElementPtr config) {
         return (isc::config::createAnswer(CONTROL_RESULT_ERROR, err.str()));
     }
 
+    /// Let postponed hook initializations to run.
+    try {
+        ControlledDhcpv6Srv::getInstance()->getIOService()->poll();
+    } catch (const std::exception& ex) {
+        err << "Error initializing hooks: "
+            << ex.what();
+        return (isc::config::createAnswer(CONTROL_RESULT_ERROR, err.str()));
+    }
+
     return (answer);
 }