dovecot-2.0: mysql: When query fails because connection gets los...
dovecot at dovecot.org
dovecot at dovecot.org
Mon Sep 13 17:08:38 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/bcb61478f04d
changeset: 12104:bcb61478f04d
user: Timo Sirainen <tss at iki.fi>
date: Mon Sep 13 15:08:12 2010 +0100
description:
mysql: When query fails because connection gets lost, use MySQL failure message instead of generic one.
diffstat:
src/lib-sql/driver-mysql.c | 34 ++++++++++++++--------------------
1 files changed, 14 insertions(+), 20 deletions(-)
diffs (66 lines):
diff -r 4fc447d1281e -r bcb61478f04d src/lib-sql/driver-mysql.c
--- a/src/lib-sql/driver-mysql.c Mon Sep 13 14:43:27 2010 +0100
+++ b/src/lib-sql/driver-mysql.c Mon Sep 13 15:08:12 2010 +0100
@@ -214,7 +214,7 @@
static int driver_mysql_do_query(struct mysql_db *db, const char *query)
{
if (mysql_query(db->mysql, query) == 0)
- return 1;
+ return 0;
/* failed */
switch (mysql_errno(db->mysql)) {
@@ -223,9 +223,9 @@
sql_db_set_state(&db->api, SQL_DB_STATE_DISCONNECTED);
break;
default:
- return -1;
+ break;
}
- return 0;
+ return -1;
}
static const char *
@@ -288,12 +288,9 @@
result = i_new(struct mysql_result, 1);
result->api = driver_mysql_result;
- switch (driver_mysql_do_query(db, query)) {
- case 0:
- /* not connected */
- result->api = sql_not_connected_result;
- break;
- case 1:
+ if (driver_mysql_do_query(db, query) < 0)
+ result->api = driver_mysql_error_result;
+ else {
/* query ok */
result->affected_rows = mysql_affected_rows(db->mysql);
result->result = mysql_store_result(db->mysql);
@@ -307,17 +304,14 @@
#endif
if (ret < 0 &&
- (result->result != NULL || mysql_errno(db->mysql) == 0))
- break;
-
- /* failed */
- if (result->result != NULL)
- mysql_free_result(result->result);
- /* fall through */
- case -1:
- /* error */
- result->api = driver_mysql_error_result;
- break;
+ (result->result != NULL || mysql_errno(db->mysql) == 0)) {
+ /* ok */
+ } else {
+ /* failed */
+ if (result->result != NULL)
+ mysql_free_result(result->result);
+ result->api = driver_mysql_error_result;
+ }
}
result->api.db = _db;
More information about the dovecot-cvs
mailing list