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