summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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.
; -------------------------------------