From: Aki Tuomi Date: Fri, 31 Aug 2018 11:07:44 +0000 (+0300) Subject: driver-mysql: Allocate mysql connection ourselves X-Git-Tag: 2.3.9~1457 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ffae212481f6f58e43c79556785e3ecbb80306eb;p=thirdparty%2Fdovecot%2Fcore.git driver-mysql: Allocate mysql connection ourselves This allows reusing the same mysql object on reconnect, and simplifies cleanup in case initialization fails. --- diff --git a/src/lib-sql/driver-mysql.c b/src/lib-sql/driver-mysql.c index 213d307299..eca58494e5 100644 --- a/src/lib-sql/driver-mysql.c +++ b/src/lib-sql/driver-mysql.c @@ -89,6 +89,9 @@ static int driver_mysql_connect(struct sql_db *_db) sql_db_set_state(&db->api, SQL_DB_STATE_CONNECTING); + if (mysql_init(db->mysql) == NULL) + i_fatal("mysql_init() failed"); + if (db->host == NULL) { /* assume option_file overrides the host, or if not we'll just connect to localhost */ @@ -162,8 +165,10 @@ static int driver_mysql_connect(struct sql_db *_db) } } -static void driver_mysql_disconnect(struct sql_db *_db ATTR_UNUSED) +static void driver_mysql_disconnect(struct sql_db *_db) { + struct mysql_db *db = (struct mysql_db *)_db; + mysql_close(db->mysql); } static int driver_mysql_parse_connect_string(struct mysql_db *db, @@ -260,9 +265,7 @@ static int driver_mysql_parse_connect_string(struct mysql_db *db, *error_r = "No hosts given in connect string"; return -1; } - db->mysql = mysql_init(NULL); - if (db->mysql == NULL) - i_fatal("mysql_init() failed"); + db->mysql = p_new(db->pool, MYSQL, 1); return 0; }