diff options
Diffstat (limited to 'res/res_config_pgsql.c')
-rw-r--r-- | res/res_config_pgsql.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/res/res_config_pgsql.c b/res/res_config_pgsql.c index 6ed6bd294..f8de86596 100644 --- a/res/res_config_pgsql.c +++ b/res/res_config_pgsql.c @@ -566,6 +566,7 @@ static struct ast_config *realtime_multi_pgsql(const char *database, const char PQfinish(pgsqlConn); pgsqlConn = NULL; } + ast_config_destroy(cfg); return NULL; } @@ -586,6 +587,7 @@ static struct ast_config *realtime_multi_pgsql(const char *database, const char if (pgresult) { ast_log(LOG_ERROR, "PostgreSQL RealTime: detected invalid input: '%s'\n", newval); va_end(ap); + ast_config_destroy(cfg); return NULL; } @@ -601,6 +603,7 @@ static struct ast_config *realtime_multi_pgsql(const char *database, const char if (pgresult) { ast_log(LOG_ERROR, "PostgreSQL RealTime: detected invalid input: '%s'\n", newval); va_end(ap); + ast_config_destroy(cfg); return NULL; } @@ -616,8 +619,9 @@ static struct ast_config *realtime_multi_pgsql(const char *database, const char /* We now have our complete statement; Lets connect to the server and execute it. */ ast_mutex_lock(&pgsql_lock); - if (pgsql_exec(database, table, ast_str_buffer(sql), &result) != 0) { + if (pgsql_exec(database, table, ast_str_buffer(sql), &result) != 0) { ast_mutex_unlock(&pgsql_lock); + ast_config_destroy(cfg); return NULL; } else { ExecStatusType result_status = PQresultStatus(result); @@ -631,6 +635,7 @@ static struct ast_config *realtime_multi_pgsql(const char *database, const char PQresultErrorMessage(result), PQresStatus(result_status)); PQclear(result); ast_mutex_unlock(&pgsql_lock); + ast_config_destroy(cfg); return NULL; } } @@ -648,6 +653,7 @@ static struct ast_config *realtime_multi_pgsql(const char *database, const char if (!(fieldnames = ast_calloc(1, numFields * sizeof(char *)))) { PQclear(result); ast_mutex_unlock(&pgsql_lock); + ast_config_destroy(cfg); return NULL; } for (i = 0; i < numFields; i++) |