summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Bright <sean.bright@gmail.com>2017-02-28 10:41:45 -0500
committerSean Bright <sean.bright@gmail.com>2017-02-28 10:41:45 -0500
commitfa8f6c2fc419fdcb9ddc72f42259145d99663211 (patch)
treef8709e865cf19ab881256ee6c5df517bf8448e07
parent9d3ab062cccc5d545648dd65beb817c37f439c2f (diff)
res_config_pgsql: Release table locks where appropriate
The find_table() functions NULL or a locked table pointer. We are not consistently calling release_table() in failure paths. Change-Id: I6f665b455799c84b036e5b34904b82b05eab9544
-rw-r--r--res/res_config_pgsql.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/res/res_config_pgsql.c b/res/res_config_pgsql.c
index efb733c88..40d1a37e1 100644
--- a/res/res_config_pgsql.c
+++ b/res/res_config_pgsql.c
@@ -768,6 +768,7 @@ static int update_pgsql(const char *database, const char *tablename, const char
ast_mutex_lock(&pgsql_lock);
if (!pgsql_reconnect(database)) {
ast_mutex_unlock(&pgsql_lock);
+ release_table(table);
return -1;
}
@@ -913,6 +914,7 @@ static int update2_pgsql(const char *database, const char *tablename, const stru
ast_mutex_lock(&pgsql_lock);
if (!pgsql_reconnect(database)) {
ast_mutex_unlock(&pgsql_lock);
+ release_table(table);
return -1;
}
@@ -1357,6 +1359,7 @@ static int require_pgsql(const char *database, const char *tablename, va_list ap
if (pgsql_exec(database, tablename, ast_str_buffer(sql), &result) != 0) {
ast_mutex_unlock(&pgsql_lock);
+ release_table(table);
return -1;
}