]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3300] Fixed db-reconnect issue
authorThomas Markwalder <tmark@isc.org>
Thu, 21 Mar 2024 17:02:34 +0000 (13:02 -0400)
committerThomas Markwalder <tmark@isc.org>
Thu, 21 Mar 2024 19:33:37 +0000 (15:33 -0400)
src/bin/dhcp4/ctrl_dhcp4_srv.cc
    ControlledDhcpv4Srv::processConfig(isc::data::ConstElementPtr config)

src/bin/dhcp6/ctrl_dhcp6_srv.cc
    ControlledDhcpv6Srv::processConfig(isc::data::ConstElementPtr config)

src/bin/dhcp4/ctrl_dhcp4_srv.cc
src/bin/dhcp6/ctrl_dhcp6_srv.cc

index ed0278fa8b38ed15d8feca558cddeadda13baba6..0c0a24c174a05d7d2ba4e75b5dea1c403ab49b91 100644 (file)
@@ -913,7 +913,7 @@ ControlledDhcpv4Srv::processConfig(isc::data::ConstElementPtr config) {
 
     // Allow DB reconnect on startup. The database connection parameters specify
     // respective details.
-    DbConnectionInitWithRetry retry;
+    std::shared_ptr<DbConnectionInitWithRetry> dbr(new DbConnectionInitWithRetry());
 
     // Single stream instance used in all error clauses
     std::ostringstream err;
@@ -1092,6 +1092,8 @@ ControlledDhcpv4Srv::processConfig(isc::data::ConstElementPtr config) {
         return (isc::config::createAnswer(CONTROL_RESULT_ERROR, err.str()));
     }
 
+    dbr.reset();
+
     /// Let postponed hook initializations to run.
     try {
         ControlledDhcpv4Srv::getInstance()->getIOService()->poll();
index cda7f8b87b3f8132fc42b660bc845788b3f38fbf..e304537ba971dddf80c2837171a247bf80b7a3a3 100644 (file)
@@ -918,7 +918,7 @@ ControlledDhcpv6Srv::processConfig(isc::data::ConstElementPtr config) {
 
     // Allow DB reconnect on startup. The database connection parameters specify
     // respective details.
-    DbConnectionInitWithRetry retry;
+    std::shared_ptr<DbConnectionInitWithRetry> dbr(new DbConnectionInitWithRetry());
 
     // Single stream instance used in all error clauses
     std::ostringstream err;
@@ -1112,6 +1112,8 @@ ControlledDhcpv6Srv::processConfig(isc::data::ConstElementPtr config) {
         return (isc::config::createAnswer(CONTROL_RESULT_ERROR, err.str()));
     }
 
+    dbr.reset();
+
     /// Let postponed hook initializations to run.
     try {
         ControlledDhcpv6Srv::getInstance()->getIOService()->poll();