From e5b44c26b46babd40a715b6d91aa0eaf775a0746 Mon Sep 17 00:00:00 2001
From: Sean Bright <sean.bright@gmail.com>
Date: Tue, 28 Feb 2017 10:41:45 -0500
Subject: [PATCH] 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
---
 res/res_config_pgsql.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/res/res_config_pgsql.c b/res/res_config_pgsql.c
index 93126c6a5d..2d37c6b194 100644
--- a/res/res_config_pgsql.c
+++ b/res/res_config_pgsql.c
@@ -733,6 +733,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;
 	}
 
@@ -878,6 +879,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;
 	}
 
@@ -1322,6 +1324,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;
 			        }
 
-- 
GitLab