Make sure variables exists (bug #409)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1675 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.0
Mark Spencer 22 years ago
parent c420eb06ea
commit 6e445e39a1

20
pbx.c

@ -3833,12 +3833,12 @@ int ast_pbx_outgoing_exten(char *type, int format, void *data, int timeout, char
strncpy(chan->context, context, sizeof(chan->context) - 1); strncpy(chan->context, context, sizeof(chan->context) - 1);
strncpy(chan->exten, "failed", sizeof(chan->exten) - 1); strncpy(chan->exten, "failed", sizeof(chan->exten) - 1);
chan->priority = 1; chan->priority = 1;
/* JDG chanvar */ if (variable) {
tmp = variable; tmp = ast_strdupa(variable);
/* FIXME replace this call with strsep NOT*/ for (var = strtok_r(tmp, "|", &tmp); var; var = strtok_r(NULL, "|", &tmp)) {
while( (var = strtok_r(NULL, "|", &tmp)) ) { pbx_builtin_setvar( chan, var );
pbx_builtin_setvar( chan, var ); }
} /* /JDG */ }
ast_pbx_run(chan); ast_pbx_run(chan);
} else } else
ast_log(LOG_WARNING, "Can't allocate the channel structure, skipping execution of extension 'failed'\n"); ast_log(LOG_WARNING, "Can't allocate the channel structure, skipping execution of extension 'failed'\n");
@ -3909,9 +3909,11 @@ int ast_pbx_outgoing_app(char *type, int format, void *data, int timeout, char *
if (sync) { if (sync) {
chan = ast_request_and_dial(type, format, data, timeout, reason, callerid); chan = ast_request_and_dial(type, format, data, timeout, reason, callerid);
if (chan) { if (chan) {
vartmp = variable; if (variable) {
while( (var = strtok_r(NULL, "|", &vartmp)) ) { vartmp = ast_strdupa(variable);
pbx_builtin_setvar( chan, var ); for (var = strtok_r(vartmp, "|", &vartmp); var; var = strtok_r(NULL, "|", &vartmp)) {
pbx_builtin_setvar( chan, var );
}
} }
if (chan->_state == AST_STATE_UP) { if (chan->_state == AST_STATE_UP) {
res = 0; res = 0;

Loading…
Cancel
Save