From: Francis Dupont Date: Fri, 21 Nov 2025 10:34:20 +0000 (+0100) Subject: [#4198] Applied proposed fix X-Git-Tag: Kea-3.1.4~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=65ce04e8b5ec84fcd7041ce437f0fa1856f8b01b;p=thirdparty%2Fkea.git [#4198] Applied proposed fix --- diff --git a/src/bin/dhcp4/ctrl_dhcp4_srv.cc b/src/bin/dhcp4/ctrl_dhcp4_srv.cc index 7de74b56ca..40b1ed2e47 100644 --- a/src/bin/dhcp4/ctrl_dhcp4_srv.cc +++ b/src/bin/dhcp4/ctrl_dhcp4_srv.cc @@ -376,23 +376,13 @@ ControlledDhcpv4Srv::commandConfigSetHandler(const string&, return (result); } - ConstElementPtr lease_database = dhcp4->get("lease-database"); - if (lease_database) { - db::DbAccessParser parser; - std::string access_string; - parser.parse(access_string, lease_database); - auto params = parser.getDbAccessParameters(); - if (params["type"] == "memfile") { - string file_name = params["name"]; - if (!file_name.empty() && - (file_name.find_first_of('/') == string::npos)) { - // Prepend the current datadir to the name. - file_name = CfgMgr::instance().getDataDir() + "/" + file_name; - } - if (Memfile_LeaseMgr::isLFCProcessRunning(file_name, Memfile_LeaseMgr::V4)) { - return (isc::config::createAnswer(CONTROL_RESULT_ERROR, - "Can not update configuration while lease file cleanup process is running.")); - } + if (LeaseMgrFactory::haveInstance() && + (LeaseMgrFactory::instance().getType() == "memfile")) { + Memfile_LeaseMgr& mgr = dynamic_cast(LeaseMgrFactory::instance()); + auto file_name = mgr.getLeaseFilePath(Memfile_LeaseMgr::V4); + if (Memfile_LeaseMgr::isLFCProcessRunning(file_name, Memfile_LeaseMgr::V4)) { + return (isc::config::createAnswer(CONTROL_RESULT_ERROR, + "Can not update configuration while lease file cleanup process is running.")); } } diff --git a/src/bin/dhcp6/ctrl_dhcp6_srv.cc b/src/bin/dhcp6/ctrl_dhcp6_srv.cc index 803e3fbaae..9452fe2a16 100644 --- a/src/bin/dhcp6/ctrl_dhcp6_srv.cc +++ b/src/bin/dhcp6/ctrl_dhcp6_srv.cc @@ -379,23 +379,13 @@ ControlledDhcpv6Srv::commandConfigSetHandler(const string&, return (result); } - ConstElementPtr lease_database = dhcp6->get("lease-database"); - if (lease_database) { - db::DbAccessParser parser; - std::string access_string; - parser.parse(access_string, lease_database); - auto params = parser.getDbAccessParameters(); - if (params["type"] == "memfile") { - string file_name = params["name"]; - if (!file_name.empty() && - (file_name.find_first_of('/') == string::npos)) { - // Prepend the current datadir to the name. - file_name = CfgMgr::instance().getDataDir() + "/" + file_name; - } - if (Memfile_LeaseMgr::isLFCProcessRunning(file_name, Memfile_LeaseMgr::V6)) { - return (isc::config::createAnswer(CONTROL_RESULT_ERROR, - "Can not update configuration while lease file cleanup process is running.")); - } + if (LeaseMgrFactory::haveInstance() && + (LeaseMgrFactory::instance().getType() == "memfile")) { + Memfile_LeaseMgr& mgr = dynamic_cast(LeaseMgrFactory::instance()); + auto file_name = mgr.getLeaseFilePath(Memfile_LeaseMgr::V6); + if (Memfile_LeaseMgr::isLFCProcessRunning(file_name, Memfile_LeaseMgr::V6)) { + return (isc::config::createAnswer(CONTROL_RESULT_ERROR, + "Can not update configuration while lease file cleanup process is running.")); } }