]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3449] clean up on destructor
authorRazvan Becheriu <razvan@isc.org>
Wed, 26 Jun 2024 13:59:27 +0000 (16:59 +0300)
committerRazvan Becheriu <razvan@isc.org>
Tue, 2 Jul 2024 11:22:40 +0000 (14:22 +0300)
src/bin/dhcp4/tests/dhcp4_test_utils.h
src/bin/dhcp6/tests/dhcp6_test_utils.h
src/hooks/dhcp/high_availability/ha_callouts.cc
src/hooks/dhcp/high_availability/ha_impl.cc
src/hooks/dhcp/high_availability/ha_impl.h
src/hooks/dhcp/mysql_cb/mysql_cb_callouts.cc
src/hooks/dhcp/pgsql_cb/pgsql_cb_callouts.cc

index c576c1d67436a3df49c35eb49eb6a40625a11f4c..269e6906f01eaf9fbf51bfac18a19823714a1e4c 100644 (file)
@@ -209,16 +209,7 @@ public:
         fake_received_.push_back(pkt);
     }
 
-    virtual ~NakedDhcpv4Srv() {
-        // Close the lease database
-        isc::dhcp::LeaseMgrFactory::destroy();
-
-        getIOService()->restart();
-        try {
-            getIOService()->poll();
-        } catch (...) {
-        }
-    }
+    virtual ~NakedDhcpv4Srv() = default;
 
     /// @brief Runs processing DHCPDISCOVER.
     ///
index d4928cd0fd0ed16a98b5b064d2d4b1286e169595..fd7a11f474d5b0bd41c342fc8372dafc5ea4455d 100644 (file)
@@ -216,11 +216,7 @@ public:
         fake_received_.push_back(pkt);
     }
 
-    virtual ~NakedDhcpv6Srv() {
-        // Close the lease database
-        isc::dhcp::LeaseMgrFactory::destroy();
-        getIOService()->stopAndPoll();
-    }
+    virtual ~NakedDhcpv6Srv() = default;
 
     /// @brief Processes incoming Solicit message.
     ///
index 58a0f7dbf9822bfddfdbd6ea2bcf345f4c86c874..0075d71320f570aca8ef770af914b74acfe6ebe7 100644 (file)
@@ -429,11 +429,8 @@ int load(LibraryHandle& handle) {
 /// @return 0 if deregistration was successful, 1 otherwise
 int unload() {
     if (impl) {
-        IOServicePtr io_service = impl->getIOService();
-        IOServiceMgr::instance().unregisterIOService(io_service);
-        io_service->stopAndPoll();
+        IOServiceMgr::instance().unregisterIOService(impl->getIOService());
         impl.reset();
-        io_service->stopAndPoll();
     }
     LOG_INFO(ha_logger, HA_DEINIT_OK);
     return (0);
index d8ea4ee910591ac2e14c449724c623e10b57c759..cc7ff614fd81cbe91010340ecb2392b6e873faf8 100644 (file)
@@ -66,6 +66,9 @@ HAImpl::~HAImpl() {
         // than relying on destruction order.
         service->stopClientAndListener();
     }
+    config_.reset();
+    services_.reset(new HAServiceMapper());
+    io_service_->stopAndPoll();
 }
 
 void
index d7920cf737cae8740b0ab480bdf5008d6c1b253e..9c5e652f3d6b9a9556877edd9445f9a3b3dcb1cc 100644 (file)
@@ -245,7 +245,6 @@ protected:
 
     /// @brief Pointer to the high availability services (state machines).
     HAServiceMapperPtr services_;
-
 };
 
 /// @brief Pointer to the High Availability hooks library implementation.
index f4c6d2816b518a6c26f6f685821d35902d676360..f9e6f09ed35d3715c49918ea2af05cf481dbb0e0 100644 (file)
@@ -94,9 +94,11 @@ int unload() {
     // Unregister the factories and remove MySQL backends
     isc::dhcp::MySqlConfigBackendDHCPv4::unregisterBackendType();
     isc::dhcp::MySqlConfigBackendDHCPv6::unregisterBackendType();
-    IOServiceMgr::instance().unregisterIOService(isc::dhcp::MySqlConfigBackendImpl::getIOService());
-    if (isc::dhcp::MySqlConfigBackendImpl::getIOService()) {
-        isc::dhcp::MySqlConfigBackendImpl::getIOService()->stopAndPoll();
+    IOServicePtr io_service = isc::dhcp::MySqlConfigBackendImpl::getIOService();
+    if (io_service) {
+        IOServiceMgr::instance().unregisterIOService(io_service);
+        io_service->stopAndPoll();
+        isc::dhcp::MySqlConfigBackendImpl::setIOService(IOServicePtr());
     }
     return (0);
 }
index 3916427bb0bfe38f27bf2a5c76fe96683e844b85..536f94f11485c8096821f60908cf045b7192933e 100644 (file)
@@ -94,9 +94,11 @@ int unload() {
     // Unregister the factories and remove PostgreSQL backends
     isc::dhcp::PgSqlConfigBackendDHCPv4::unregisterBackendType();
     isc::dhcp::PgSqlConfigBackendDHCPv6::unregisterBackendType();
-    IOServiceMgr::instance().unregisterIOService(isc::dhcp::PgSqlConfigBackendImpl::getIOService());
-    if (isc::dhcp::PgSqlConfigBackendImpl::getIOService()) {
-        isc::dhcp::PgSqlConfigBackendImpl::getIOService()->stopAndPoll();
+    IOServicePtr io_service = isc::dhcp::PgSqlConfigBackendImpl::getIOService();
+    if (io_service) {
+        IOServiceMgr::instance().unregisterIOService(io_service);
+        io_service->stopAndPoll();
+        isc::dhcp::PgSqlConfigBackendImpl::setIOService(IOServicePtr());
     }
     return (0);
 }