diff options
Diffstat (limited to 'pbx/pbx_spool.c')
-rw-r--r-- | pbx/pbx_spool.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/pbx/pbx_spool.c b/pbx/pbx_spool.c index daaa8b526..f265d7569 100644 --- a/pbx/pbx_spool.c +++ b/pbx/pbx_spool.c @@ -71,6 +71,8 @@ struct outgoing { int waittime; /*! PID which is currently calling */ long callingpid; + /*! Formats (codecs) for this call */ + int format; /*! What to connect to outgoing */ char tech[256]; @@ -107,6 +109,7 @@ static void init_outgoing(struct outgoing *o) o->priority = 1; o->retrytime = 300; o->waittime = 45; + o->format = AST_FORMAT_SLINEAR; ast_set_flag(&o->options, SPOOL_FLAG_ALWAYS_DELETE); } @@ -182,6 +185,8 @@ static int apply_outgoing(struct outgoing *o, char *fn, FILE *f) ast_log(LOG_WARNING, "Invalid max retries at line %d of %s\n", lineno, fn); o->maxretries = 0; } + } else if (!strcasecmp(buf, "codecs")) { + ast_parse_allow_disallow(NULL, &o->format, c, 1); } else if (!strcasecmp(buf, "context")) { ast_copy_string(o->context, c, sizeof(o->context)); } else if (!strcasecmp(buf, "extension")) { @@ -332,10 +337,10 @@ static void *attempt_thread(void *data) int res, reason; if (!ast_strlen_zero(o->app)) { ast_verb(3, "Attempting call on %s/%s for application %s(%s) (Retry %d)\n", o->tech, o->dest, o->app, o->data, o->retries); - res = ast_pbx_outgoing_app(o->tech, AST_FORMAT_SLINEAR, o->dest, o->waittime * 1000, o->app, o->data, &reason, 2 /* wait to finish */, o->cid_num, o->cid_name, o->vars, o->account, NULL); + res = ast_pbx_outgoing_app(o->tech, o->format, o->dest, o->waittime * 1000, o->app, o->data, &reason, 2 /* wait to finish */, o->cid_num, o->cid_name, o->vars, o->account, NULL); } else { ast_verb(3, "Attempting call on %s/%s for %s@%s:%d (Retry %d)\n", o->tech, o->dest, o->exten, o->context,o->priority, o->retries); - res = ast_pbx_outgoing_exten(o->tech, AST_FORMAT_SLINEAR, o->dest, o->waittime * 1000, o->context, o->exten, o->priority, &reason, 2 /* wait to finish */, o->cid_num, o->cid_name, o->vars, o->account, NULL); + res = ast_pbx_outgoing_exten(o->tech, o->format, o->dest, o->waittime * 1000, o->context, o->exten, o->priority, &reason, 2 /* wait to finish */, o->cid_num, o->cid_name, o->vars, o->account, NULL); } if (res) { ast_log(LOG_NOTICE, "Call failed to go through, reason (%d) %s\n", reason, ast_channel_reason2str(reason)); |