+2248. [bug] razvan
+ Fixed a file descriptor leak in the High Availability hook
+ library.
+ (Gitlab #3449, #3486)
+
Kea 2.6.0 (stable) released on May 29, 2024
2247. [build] razvan
cfg_db->createManagers();
// Reset counters related to connections as all managers have been recreated.
srv->getNetworkState()->resetForDbConnection();
-
} catch (const std::exception& ex) {
err << "Unable to open database: " << ex.what();
return (isc::config::createAnswer(CONTROL_RESULT_ERROR, err.str()));
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.
///
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.
///
/// @brief Destructor
///
/// Removes existing configuration.
- ~Dhcpv6SrvTest();
+ virtual ~Dhcpv6SrvTest();
/// @brief Used to configure a server for tests.
///
int unload() {
if (impl) {
IOServiceMgr::instance().unregisterIOService(impl->getIOService());
- impl->getIOService()->stopAndPoll();
+ impl.reset();
}
- impl.reset();
LOG_INFO(ha_logger, HA_DEINIT_OK);
return (0);
}
// than relying on destruction order.
service->stopClientAndListener();
}
+ config_.reset();
+ services_.reset(new HAServiceMapper());
+ io_service_->stopAndPoll();
}
void
/// @brief Pointer to the high availability services (state machines).
HAServiceMapperPtr services_;
-
};
/// @brief Pointer to the High Availability hooks library implementation.
// 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);
}
// 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);
}