diff --git a/cdr/cdr_pgsql.c b/cdr/cdr_pgsql.c
index 82dce65e7bae4dd0707c57863578db421a8c5167..4ccd4aa83b614087cb20236479e531e3bd661538 100644
--- a/cdr/cdr_pgsql.c
+++ b/cdr/cdr_pgsql.c
@@ -87,9 +87,9 @@ static int pgsql_log(struct ast_cdr *cdr)
 			connected = 1;
 		} else {
 			pgerror = PQerrorMessage(conn);
-			PQfinish(conn);
 			ast_log(LOG_ERROR, "cdr_pgsql: Unable to connect to database server %s.  Calls will not be logged!\n", pghostname);
 			ast_log(LOG_ERROR, "cdr_pgsql: Reason: %s\n", pgerror);
+			PQfinish(conn);
 			conn = NULL;
 		}
 	}
@@ -146,9 +146,9 @@ static int pgsql_log(struct ast_cdr *cdr)
 				connected = 1;
 			} else {
 				pgerror = PQerrorMessage(conn);
-				PQfinish(conn);
 				ast_log(LOG_ERROR, "cdr_pgsql: Unable to reconnect to database server %s. Calls will not be logged!\n", pghostname);
 				ast_log(LOG_ERROR, "cdr_pgsql: Reason: %s\n", pgerror);
+				PQfinish(conn);
 				conn = NULL;
 				connected = 0;
 				ast_mutex_unlock(&pgsql_lock);