]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
pgsql: Don't crash at disconnect/deinit if there's an unfinished query.
authorTimo Sirainen <tss@iki.fi>
Fri, 15 May 2015 10:27:29 +0000 (13:27 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 15 May 2015 10:27:29 +0000 (13:27 +0300)
src/lib-sql/driver-pgsql.c

index a4f3cc5c26f07238fdde5e1a29eedaab27a1b11a..9b0e22f7a6ee2ee930af3fcc55153a0acac2aea9 100644 (file)
@@ -245,8 +245,10 @@ static void driver_pgsql_disconnect(struct sql_db *_db)
 {
        struct pgsql_db *db = (struct pgsql_db *)_db;
 
-       if (db->cur_result != NULL && db->cur_result->to != NULL)
-                result_finish(db->cur_result);
+       if (db->cur_result != NULL && db->cur_result->to != NULL) {
+               driver_pgsql_stop_io(db);
+               result_finish(db->cur_result);
+       }
 
        _db->no_reconnect = TRUE;
        driver_pgsql_close(db);
@@ -276,11 +278,7 @@ static void driver_pgsql_deinit_v(struct sql_db *_db)
 {
        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);
+       driver_pgsql_disconnect(_db);
        i_free(db->host);
        i_free(db->error);
        i_free(db->connect_string);