From: Razvan Becheriu Date: Wed, 26 Jun 2024 13:59:27 +0000 (+0300) Subject: [#3449] clean up on destructor X-Git-Tag: Kea-2.7.1~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6419c57b9d0d51e18baeabed640bae422fa4e5f9;p=thirdparty%2Fkea.git [#3449] clean up on destructor --- diff --git a/src/bin/dhcp4/tests/dhcp4_test_utils.h b/src/bin/dhcp4/tests/dhcp4_test_utils.h index c576c1d674..269e6906f0 100644 --- a/src/bin/dhcp4/tests/dhcp4_test_utils.h +++ b/src/bin/dhcp4/tests/dhcp4_test_utils.h @@ -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. /// diff --git a/src/bin/dhcp6/tests/dhcp6_test_utils.h b/src/bin/dhcp6/tests/dhcp6_test_utils.h index d4928cd0fd..fd7a11f474 100644 --- a/src/bin/dhcp6/tests/dhcp6_test_utils.h +++ b/src/bin/dhcp6/tests/dhcp6_test_utils.h @@ -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. /// diff --git a/src/hooks/dhcp/high_availability/ha_callouts.cc b/src/hooks/dhcp/high_availability/ha_callouts.cc index 58a0f7dbf9..0075d71320 100644 --- a/src/hooks/dhcp/high_availability/ha_callouts.cc +++ b/src/hooks/dhcp/high_availability/ha_callouts.cc @@ -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); diff --git a/src/hooks/dhcp/high_availability/ha_impl.cc b/src/hooks/dhcp/high_availability/ha_impl.cc index d8ea4ee910..cc7ff614fd 100644 --- a/src/hooks/dhcp/high_availability/ha_impl.cc +++ b/src/hooks/dhcp/high_availability/ha_impl.cc @@ -66,6 +66,9 @@ HAImpl::~HAImpl() { // than relying on destruction order. service->stopClientAndListener(); } + config_.reset(); + services_.reset(new HAServiceMapper()); + io_service_->stopAndPoll(); } void diff --git a/src/hooks/dhcp/high_availability/ha_impl.h b/src/hooks/dhcp/high_availability/ha_impl.h index d7920cf737..9c5e652f3d 100644 --- a/src/hooks/dhcp/high_availability/ha_impl.h +++ b/src/hooks/dhcp/high_availability/ha_impl.h @@ -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. diff --git a/src/hooks/dhcp/mysql_cb/mysql_cb_callouts.cc b/src/hooks/dhcp/mysql_cb/mysql_cb_callouts.cc index f4c6d2816b..f9e6f09ed3 100644 --- a/src/hooks/dhcp/mysql_cb/mysql_cb_callouts.cc +++ b/src/hooks/dhcp/mysql_cb/mysql_cb_callouts.cc @@ -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); } diff --git a/src/hooks/dhcp/pgsql_cb/pgsql_cb_callouts.cc b/src/hooks/dhcp/pgsql_cb/pgsql_cb_callouts.cc index 3916427bb0..536f94f114 100644 --- a/src/hooks/dhcp/pgsql_cb/pgsql_cb_callouts.cc +++ b/src/hooks/dhcp/pgsql_cb/pgsql_cb_callouts.cc @@ -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); }