summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Bryant <russell@russellbryant.com>2007-03-14 16:34:03 +0000
committerRussell Bryant <russell@russellbryant.com>2007-03-14 16:34:03 +0000
commit2ea01c893ca1147cd1c722d3c330c690b3b3350f (patch)
tree8c910e4189c294575034e49af73f20bd03a9b2de
parent4e8f9782879168ab01dd95d74633a2d7f8eebae1 (diff)
Merged revisions 58894 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r58894 | russell | 2007-03-14 11:33:01 -0500 (Wed, 14 Mar 2007) | 8 lines By default, don't attempt to do any CallerID handling at all with SLA because it is known to not work properly in some situations. However, add an option to enable it for those that would like to use it anyway. The short story behind this is that to properly handle CallerID with SLA, we need the ability to change the CallerID on an existing call, and we are not ready to handle that. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@58895 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--apps/app_meetme.c15
-rw-r--r--configs/sla.conf.sample6
2 files changed, 16 insertions, 5 deletions
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index d23c0e94f..b16dd5349 100644
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -496,7 +496,7 @@ struct sla_ringing_station {
/*!
* \brief A structure for data used by the sla thread
*/
-static struct sla {
+static struct {
/*! The SLA thread ID */
pthread_t thread;
ast_cond_t cond;
@@ -506,6 +506,9 @@ static struct sla {
AST_LIST_HEAD_NOLOCK(, sla_failed_station) failed_stations;
AST_LIST_HEAD_NOLOCK(, sla_event) event_q;
unsigned int stop:1;
+ /*! Attempt to handle CallerID, even though it is known not to work
+ * properly in some situations. */
+ unsigned int attempt_callerid:1;
} sla = {
.thread = AST_PTHREADT_NULL,
};
@@ -3496,7 +3499,8 @@ static int sla_ring_station(struct sla_ringing_trunk *ringing_trunk, struct sla_
return -1;
}
- if (ast_dial_run(dial, ringing_trunk->trunk->chan, 1) != AST_DIAL_RESULT_TRYING) {
+ if (ast_dial_run(dial, sla.attempt_callerid ? ringing_trunk->trunk->chan : NULL, 1)
+ != AST_DIAL_RESULT_TRYING) {
struct sla_failed_station *failed_station;
ast_dial_destroy(dial);
if (!(failed_station = ast_calloc(1, sizeof(*failed_station))))
@@ -3956,7 +3960,7 @@ static void *dial_trunk(void *data)
return NULL;
}
- dial_res = ast_dial_run(dial, trunk_ref->chan, 1);
+ dial_res = ast_dial_run(dial, sla.attempt_callerid ? trunk_ref->chan : NULL, 1);
if (dial_res != AST_DIAL_RESULT_TRYING) {
ast_mutex_lock(args->cond_lock);
ast_cond_signal(args->cond);
@@ -4638,6 +4642,7 @@ static int sla_load_config(void)
struct ast_config *cfg;
const char *cat = NULL;
int res = 0;
+ const char *val;
ast_mutex_init(&sla.lock);
ast_cond_init(&sla.cond, NULL);
@@ -4645,9 +4650,11 @@ static int sla_load_config(void)
if (!(cfg = ast_config_load(SLA_CONFIG_FILE)))
return 0; /* Treat no config as normal */
+ if ((val = ast_variable_retrieve(cfg, "general", "attemptcallerid")))
+ sla.attempt_callerid = ast_true(val);
+
while ((cat = ast_category_browse(cfg, cat)) && !res) {
const char *type;
- /* Reserve "general" for ... general stuff! */
if (!strcasecmp(cat, "general"))
continue;
if (!(type = ast_variable_retrieve(cfg, cat, "type"))) {
diff --git a/configs/sla.conf.sample b/configs/sla.conf.sample
index 433adf31f..c44e2ca42 100644
--- a/configs/sla.conf.sample
+++ b/configs/sla.conf.sample
@@ -6,8 +6,12 @@
; ---- General Options ----------------
[general]
-; There are none!
+;attemptcallerid=no ; Attempt CallerID handling. The default value for this
+ ; is "no" because CallerID handling with an SLA setup is
+ ; known to not work properly in some situations. However,
+ ; feel free to enable it if you would like. If you do, and
+ ; you find problems, please do not report them.
; -------------------------------------