From de0d0ad13798840b2f16747488f24c875a4947eb Mon Sep 17 00:00:00 2001
From: Tilghman Lesher <tilghman@meg.abyt.es>
Date: Fri, 1 Feb 2008 18:08:44 +0000
Subject: [PATCH] Clarify the pooling functionality by changing the config file
 keyword

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@101824 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 configs/res_odbc.conf.sample | 13 ++++++++-----
 res/res_odbc.c               | 11 ++++++++++-
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/configs/res_odbc.conf.sample b/configs/res_odbc.conf.sample
index 097849dd73..c40b47e3ef 100644
--- a/configs/res_odbc.conf.sample
+++ b/configs/res_odbc.conf.sample
@@ -4,8 +4,9 @@
 ; Note that all environmental variables can be seen by all connections,
 ; so you can't have different values for different connections.
 [ENV]
-INFORMIXSERVER => my_special_database
-INFORMIXDIR => /opt/informix
+;INFORMIXSERVER => my_special_database
+;INFORMIXDIR => /opt/informix
+;ORACLE_HOME => /home/oracle
 
 ; All other sections are arbitrary names for database connections.
 
@@ -15,6 +16,7 @@ dsn => asterisk
 ;username => myuser
 ;password => mypass
 pre-connect => yes
+;
 ; What should we execute to ensure that our connection is still alive?  The
 ; statement should return a non-zero value in the first field of its first
 ; record.  The default is "select 1".
@@ -34,17 +36,18 @@ pre-connect => yes
 ;idlecheck => 3600
 
 ; Certain servers, such as MS SQL Server and Sybase use the TDS protocol, which
-; limits the number of active queries per connection to 1.  By setting up pools
-; of connections, Asterisk can be made to work with these servers.
+; limits the number of active queries per connection to 1.  By telling res_odbc
+; not to share connections, Asterisk can be made to work with these servers.
 [sqlserver]
 enabled => no
 dsn => mickeysoft
-pooling => yes
+share_connections => no
 limit => 5
 username => oscar
 password => thegrouch
 pre-connect => yes
 sanitysql => select count(*) from systables
+;
 ; Many databases have a default of '\' to escape special characters.  MS SQL
 ; Server does not.
 backslash_is_escape => no
diff --git a/res/res_odbc.c b/res/res_odbc.c
index 201cf77b93..34d905b555 100644
--- a/res/res_odbc.c
+++ b/res/res_odbc.c
@@ -262,6 +262,10 @@ static int load_odbc_config(void)
 				if (!strcasecmp(v->name, "pooling")) {
 					if (ast_true(v->value))
 						pooling = 1;
+				} else if (!strncasecmp(v->name, "share", 5)) {
+					/* "shareconnections" is a little clearer in meaning than "pooling" */
+					if (ast_false(v->value))
+						pooling = 1;
 				} else if (!strcasecmp(v->name, "limit")) {
 					sscanf(v->value, "%d", &limit);
 					if (ast_true(v->value) && !limit) {
@@ -633,7 +637,12 @@ static int reload(void)
 				bse = 1;
 				for (v = ast_variable_browse(config, cat); v; v = v->next) {
 					if (!strcasecmp(v->name, "pooling")) {
-						pooling = 1;
+						if (ast_true(v->value))
+							pooling = 1;
+					} else if (!strncasecmp(v->name, "share", 5)) {
+						/* "shareconnections" is a little clearer in meaning than "pooling" */
+						if (ast_false(v->value))
+							pooling = 1;
 					} else if (!strcasecmp(v->name, "limit")) {
 						sscanf(v->value, "%d", &limit);
 						if (ast_true(v->value) && !limit) {
-- 
GitLab