diff options
author | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-06-12 19:40:41 +0000 |
---|---|---|
committer | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-06-12 19:40:41 +0000 |
commit | f0549e843bfd93c482dab10a2319610ec6e9490c (patch) | |
tree | 7936426b3fc95018f9e7c88c9018f0cbf3805852 | |
parent | 57e249fb0a2c5ea5fe409745f6aca22ffb687e9e (diff) |
Merged revisions 69016 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r69016 | russell | 2007-06-12 14:40:17 -0500 (Tue, 12 Jun 2007) | 4 lines
Fix a memory leak pointed out by prashant_jois in #asterisk-bugs. PQclear() was
not called on the result structure after doing a PQexec(). Also, fix up some
formatting in passing.
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@69017 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | cdr/cdr_pgsql.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/cdr/cdr_pgsql.c b/cdr/cdr_pgsql.c index 39639bd70..d5ec87884 100644 --- a/cdr/cdr_pgsql.c +++ b/cdr/cdr_pgsql.c @@ -68,13 +68,13 @@ static int connected = 0; AST_MUTEX_DEFINE_STATIC(pgsql_lock); static PGconn *conn = NULL; -static PGresult *result = NULL; static int pgsql_log(struct ast_cdr *cdr) { struct tm tm; char sqlcmd[2048] = "", timestr[128]; char *pgerror; + PGresult *result; ast_mutex_lock(&pgsql_lock); @@ -154,26 +154,27 @@ static int pgsql_log(struct ast_cdr *cdr) } } result = PQexec(conn, sqlcmd); - if ( PQresultStatus(result) != PGRES_COMMAND_OK) { - pgerror = PQresultErrorMessage(result); + if (PQresultStatus(result) != PGRES_COMMAND_OK) { + pgerror = PQresultErrorMessage(result); ast_log(LOG_ERROR,"cdr_pgsql: Failed to insert call detail record into database!\n"); - ast_log(LOG_ERROR,"cdr_pgsql: Reason: %s\n", pgerror); + ast_log(LOG_ERROR,"cdr_pgsql: Reason: %s\n", pgerror); ast_log(LOG_ERROR,"cdr_pgsql: Connection may have been lost... attempting to reconnect.\n"); PQreset(conn); if (PQstatus(conn) == CONNECTION_OK) { ast_log(LOG_ERROR, "cdr_pgsql: Connection reestablished.\n"); connected = 1; result = PQexec(conn, sqlcmd); - if ( PQresultStatus(result) != PGRES_COMMAND_OK) - { + if (PQresultStatus(result) != PGRES_COMMAND_OK) { pgerror = PQresultErrorMessage(result); ast_log(LOG_ERROR,"cdr_pgsql: HARD ERROR! Attempted reconnection failed. DROPPING CALL RECORD!\n"); ast_log(LOG_ERROR,"cdr_pgsql: Reason: %s\n", pgerror); } } ast_mutex_unlock(&pgsql_lock); + PQclear(result); return -1; } + PQclear(result); } ast_mutex_unlock(&pgsql_lock); return 0; |