dovecot-2.0: lib-sql: sql_disconnect() now aborts all pending re...
dovecot at dovecot.org
dovecot at dovecot.org
Mon Aug 23 18:09:17 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/b88b207b79b2
changeset: 12033:b88b207b79b2
user: Timo Sirainen <tss at iki.fi>
date: Mon Aug 23 15:58:53 2010 +0100
description:
lib-sql: sql_disconnect() now aborts all pending requests.
diffstat:
src/lib-sql/driver-pgsql.c | 3 +++
src/lib-sql/driver-sqlpool.c | 20 +++++++++++++-------
src/lib-sql/sql-api.h | 2 +-
3 files changed, 17 insertions(+), 8 deletions(-)
diffs (69 lines):
diff -r 17174c55008b -r b88b207b79b2 src/lib-sql/driver-pgsql.c
--- a/src/lib-sql/driver-pgsql.c Mon Aug 23 15:31:37 2010 +0100
+++ b/src/lib-sql/driver-pgsql.c Mon Aug 23 15:58:53 2010 +0100
@@ -214,6 +214,9 @@
{
struct pgsql_db *db = (struct pgsql_db *)_db;
+ if (db->cur_result != NULL && db->cur_result->to != NULL)
+ result_finish(db->cur_result);
+
_db->no_reconnect = TRUE;
driver_pgsql_close(db);
_db->no_reconnect = FALSE;
diff -r 17174c55008b -r b88b207b79b2 src/lib-sql/driver-sqlpool.c
--- a/src/lib-sql/driver-sqlpool.c Mon Aug 23 15:31:37 2010 +0100
+++ b/src/lib-sql/driver-sqlpool.c Mon Aug 23 15:58:53 2010 +0100
@@ -432,6 +432,17 @@
return &db->api;
}
+static void driver_sqlpool_abort_requests(struct sqlpool_db *db)
+{
+ while (db->requests_head != NULL) {
+ struct sqlpool_request *request = db->requests_head;
+
+ sqlpool_request_abort(&request);
+ }
+ if (db->request_to != NULL)
+ timeout_remove(&db->request_to);
+}
+
static void driver_sqlpool_deinit(struct sql_db *_db)
{
struct sqlpool_db *db = (struct sqlpool_db *)_db;
@@ -442,13 +453,7 @@
sql_deinit(&conn->db);
array_clear(&db->all_connections);
- while (db->requests_head != NULL) {
- struct sqlpool_request *request = db->requests_head;
-
- sqlpool_request_abort(&request);
- }
- if (db->request_to != NULL)
- timeout_remove(&db->request_to);
+ driver_sqlpool_abort_requests(db);
array_foreach_modifiable(&db->hosts, host)
i_free(host->connect_string);
@@ -483,6 +488,7 @@
array_foreach(&db->all_connections, conn)
sql_disconnect(conn->db);
+ driver_sqlpool_abort_requests(db);
}
static const char *
diff -r 17174c55008b -r b88b207b79b2 src/lib-sql/sql-api.h
--- a/src/lib-sql/sql-api.h Mon Aug 23 15:31:37 2010 +0100
+++ b/src/lib-sql/sql-api.h Mon Aug 23 15:58:53 2010 +0100
@@ -65,7 +65,7 @@
though. Returns -1 if we're not connected, 0 if we started connecting or
1 if we are fully connected now. */
int sql_connect(struct sql_db *db);
-/* Explicitly disconnect from database. */
+/* Explicitly disconnect from database and abort pending auth requests. */
void sql_disconnect(struct sql_db *db);
/* Escape the given string if needed and return it. */
More information about the dovecot-cvs
mailing list