From: Razvan Becheriu Date: Mon, 3 Nov 2025 12:26:31 +0000 (+0200) Subject: [#4207] fixed mysql lib unload X-Git-Tag: Kea-3.1.4~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b796a974713dc4be3020ea42e887a6df57b1d91c;p=thirdparty%2Fkea.git [#4207] fixed mysql lib unload --- diff --git a/src/lib/mysql/mysql_connection.cc b/src/lib/mysql/mysql_connection.cc index 8874f9503c..7c63257d8d 100644 --- a/src/lib/mysql/mysql_connection.cc +++ b/src/lib/mysql/mysql_connection.cc @@ -31,11 +31,9 @@ using namespace std; namespace isc { namespace db { -std::string MySqlConnection::KEA_ADMIN_ = KEA_ADMIN; +static MySqlLibraryInit init; -int MySqlHolder::atexit_ = [] { - return atexit([] { mysql_library_end(); }); -}(); +std::string MySqlConnection::KEA_ADMIN_ = KEA_ADMIN; /// @todo: Migrate this default value to src/bin/dhcpX/simple_parserX.cc const int MYSQL_DEFAULT_CONNECTION_TIMEOUT = 5; // seconds diff --git a/src/lib/mysql/mysql_connection.h b/src/lib/mysql/mysql_connection.h index c7b352a9c0..ea040867de 100644 --- a/src/lib/mysql/mysql_connection.h +++ b/src/lib/mysql/mysql_connection.h @@ -161,8 +161,6 @@ public: } private: - /// @brief Variable used for its static property to call atexit() once. - static int atexit_; /// @brief Initialization context MYSQL* mysql_; @@ -836,6 +834,19 @@ public: static std::string KEA_ADMIN_; }; +/// @brief Structure used to initialize and clean up after MySQL library. +struct MySqlLibraryInit { + /// @brief Constructor. + MySqlLibraryInit() { + mysql_library_init(0, 0, 0); + } + + /// @brief Destructor. + ~MySqlLibraryInit() { + mysql_library_end(); + } +}; + } // end of isc::db namespace } // end of isc namespace