dovecot-1.1: pgsql: If query fails because connection gets close...
dovecot at dovecot.org
dovecot at dovecot.org
Mon Jan 12 20:26:32 EET 2009
details: http://hg.dovecot.org/dovecot-1.1/rev/75a47e2a7a68
changeset: 8086:75a47e2a7a68
user: Timo Sirainen <tss at iki.fi>
date: Mon Jan 12 12:05:58 2009 -0500
description:
pgsql: If query fails because connection gets closed, return a proper error message.
diffstat:
1 file changed, 15 insertions(+), 10 deletions(-)
src/lib-sql/driver-pgsql.c | 25 +++++++++++++++----------
diffs (35 lines):
diff -r da553dd1f470 -r 75a47e2a7a68 src/lib-sql/driver-pgsql.c
--- a/src/lib-sql/driver-pgsql.c Mon Jan 12 12:05:19 2009 -0500
+++ b/src/lib-sql/driver-pgsql.c Mon Jan 12 12:05:58 2009 -0500
@@ -776,16 +776,21 @@ static const char *driver_pgsql_result_g
const char *msg;
size_t len;
- msg = PQresultErrorMessage(result->pgres);
- if (msg == NULL)
- return "(no error set)";
-
- /* Error message should contain trailing \n, we don't want it */
- len = strlen(msg);
- i_free(db->error);
- db->error = len == 0 || msg[len-1] != '\n' ?
- i_strdup(msg) : i_strndup(msg, len-1);
-
+ i_free_and_null(db->error);
+
+ if (result->pgres == NULL) {
+ /* connection error */
+ db->error = i_strdup(last_error(db));
+ } else {
+ msg = PQresultErrorMessage(result->pgres);
+ if (msg == NULL)
+ return "(no error set)";
+
+ /* Error message should contain trailing \n, we don't want it */
+ len = strlen(msg);
+ db->error = len == 0 || msg[len-1] != '\n' ?
+ i_strdup(msg) : i_strndup(msg, len-1);
+ }
return db->error;
}
More information about the dovecot-cvs
mailing list