# HG changeset patch # User Timo Sirainen # Date 1090154457 -10800 # Node ID c795490b23d2bc8090c98ed7adbe17e7f27c86fa # Parent 7e02790ded71a274a06f3e8367a17a8893164a70 Fixes reconnecting to MySQL and some cleanups. Patch by Tomi Hakala. diff -r 7e02790ded71 -r c795490b23d2 src/auth/db-mysql.c --- a/src/auth/db-mysql.c Sun Jul 18 15:36:59 2004 +0300 +++ b/src/auth/db-mysql.c Sun Jul 18 15:40:57 2004 +0300 @@ -54,6 +54,9 @@ MYSQL_RES *res; int failed; + if (verbose_debug) + i_info("MySQL: Performing query: %s", query); + if (!conn->connected) { if (!mysql_conn_open(conn)) { request->callback(conn, request, NULL); @@ -61,23 +64,25 @@ } } - if (verbose_debug) - i_info("MYSQL: Performing query: %s", query); - - if (mysql_query(conn->mysql, query)) - i_info("MYSQL: Error executing query \"%s\": %s", query, - mysql_error(conn->mysql)); - - if ((res = mysql_store_result(conn->mysql))) - failed = FALSE; - else { - i_info("MYSQL: Error retrieving results: %s", - mysql_error(conn->mysql)); + if (mysql_query(conn->mysql, query) == 0) { + /* query succeeded */ + if ((res = mysql_store_result(conn->mysql))) + failed = FALSE; + else { + /* something went wrong on storing result */ + i_error("MySQL: Error retrieving results: %s", + mysql_error(conn->mysql)); + } + } else { + /* query failed */ + i_error("MySQL: Error executing query \"%s\": %s", query, + mysql_error(conn->mysql)); failed = TRUE; } request->callback(conn, request, failed ? NULL : res); - mysql_free_result(res); + if (!failed) + mysql_free_result(res); i_free(request); } @@ -89,7 +94,7 @@ if (conn->mysql == NULL) { conn->mysql = mysql_init(NULL); if (conn->mysql == NULL) { - i_error("MYSQL: mysql_init failed"); + i_error("MySQL: mysql_init failed"); return FALSE; } @@ -99,14 +104,17 @@ conn->set.db_port, conn->set.db_unix_socket, conn->set.db_client_flags)) { - i_error("MYSQL: Can't connect to database %s: %s", + i_error("MySQL: Can't connect to database %s: %s", conn->set.db, mysql_error(conn->mysql)); - return FALSE; + conn->connected = FALSE; + conn->mysql = NULL; + } else { + conn->connected = TRUE; + i_info("MySQL: connected to %s", conn->set.db_host); } } - - conn->connected = TRUE; - return TRUE; + + return conn->connected; } static void mysql_conn_close(struct mysql_connection *conn) @@ -163,9 +171,9 @@ exit(FATAL_DEFAULT); if (conn->set.db == NULL) - i_fatal("MYSQL: db variable isn't set in config file"); + i_fatal("MySQL: db variable isn't set in config file"); if (conn->set.db_user == NULL) - i_fatal("MYSQL: db_user variable isn't set in config file"); + i_fatal("MySQL: db_user variable isn't set in config file"); (void)mysql_conn_open(conn);