changeset 5493:9f7f311260be HEAD

If reply is received from server before going to ioloop, don't hang.
author Timo Sirainen <tss@iki.fi>
date Tue, 03 Apr 2007 08:09:25 +0300
parents 571c43d9080c
children 1d2066223bb0
files src/lib-sql/driver-pgsql.c
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-sql/driver-pgsql.c	Tue Apr 03 07:44:34 2007 +0300
+++ b/src/lib-sql/driver-pgsql.c	Tue Apr 03 08:09:25 2007 +0300
@@ -31,6 +31,7 @@
 	unsigned int connecting:1;
 	unsigned int connected:1;
 	unsigned int querying:1;
+	unsigned int query_finished:1;
 };
 
 struct pgsql_result {
@@ -489,6 +490,7 @@
 {
         struct pgsql_db *db = context;
 
+	db->query_finished = TRUE;
 	db->sync_result = result;
 	io_loop_stop(db->ioloop);
 }
@@ -512,9 +514,11 @@
 				old_io.callback, old_io.context);
 	}
 
+	db->query_finished = FALSE;
 	driver_pgsql_query(_db, query, pgsql_query_s_callback, db);
 
-	io_loop_run(db->ioloop);
+	if (!db->query_finished)
+		io_loop_run(db->ioloop);
 	io_loop_destroy(&db->ioloop);
 
 	i_assert(db->io == NULL);