[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