[dovecot-cvs] dovecot/src/lib-sql driver-pgsql.c,1.9,1.10
cras at dovecot.org
cras at dovecot.org
Tue Jan 31 07:06:44 EET 2006
Update of /var/lib/cvs/dovecot/src/lib-sql
In directory talvi:/tmp/cvs-serv30093
Modified Files:
driver-pgsql.c
Log Message:
Make sure queued queries and timeout get freed when deinitializing. Send the
first query immediately after connected to pgsql instead of waiting for 5
seconds.
Index: driver-pgsql.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-sql/driver-pgsql.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- driver-pgsql.c 26 Jan 2006 22:01:08 -0000 1.9
+++ driver-pgsql.c 31 Jan 2006 05:06:42 -0000 1.10
@@ -70,6 +70,7 @@
extern struct sql_result driver_pgsql_result;
static void queue_send_next(struct pgsql_db *db);
+static void result_finish(struct pgsql_result *result);
static void driver_pgsql_close(struct pgsql_db *db)
{
@@ -135,6 +136,9 @@
io_add(PQsocket(db->pg), io_dir, connect_callback, db);
db->io_dir = io_dir;
}
+
+ if (db->connected && db->queue != NULL)
+ queue_send_next(db);
}
static int driver_pgsql_connect(struct sql_db *_db)
@@ -184,6 +188,18 @@
{
struct pgsql_db *db = (struct pgsql_db *)_db;
+ while (db->queue != NULL) {
+ struct pgsql_queue *next = db->queue->next;
+
+ result_finish(db->queue->result);
+ i_free(db->queue->query);
+ i_free(db->queue);
+
+ db->queue = next;
+ }
+
+ if (db->queue_to != 0)
+ timeout_remove(&db->queue_to);
driver_pgsql_close(db);
i_free(db->error);
i_free(db);
More information about the dovecot-cvs
mailing list