Merged revisions 160555 via svnmerge from

https://origsvn.digium.com/svn/asterisk/trunk

........
r160555 | mmichelson | 2008-12-03 11:07:09 -0600 (Wed, 03 Dec 2008) | 11 lines

When investigating issue #13548, I found that gosub
handling in app_queue was just completely wrong, mostly
because the channel operations being performed were being
done on the incorrect channel.

With this set of changes, a gosub will correctly run on
the answering queue member's channel. There are still crash
issues which occur if there are dialplan syntax errors, so
I cannot yet close the referenced issue.


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@160557 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Michelson
2008-12-03 17:10:04 +00:00
parent 1ae9921551
commit 96792dba18

View File

@@ -3828,9 +3828,9 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
char *gosub_args, *gosub_argstart;
/* Set where we came from */
ast_copy_string(qe->chan->context, "app_dial_gosub_virtual_context", sizeof(qe->chan->context));
ast_copy_string(qe->chan->exten, "s", sizeof(qe->chan->exten));
qe->chan->priority = 0;
ast_copy_string(peer->context, "app_queue_gosub_virtual_context", sizeof(peer->context));
ast_copy_string(peer->exten, "s", sizeof(peer->exten));
peer->priority = 0;
gosub_argstart = strchr(gosubexec, ',');
if (gosub_argstart) {
@@ -3847,8 +3847,8 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
}
}
if (gosub_args) {
res = pbx_exec(qe->chan, application, gosub_args);
ast_pbx_run(qe->chan);
res = pbx_exec(peer, application, gosub_args);
ast_pbx_run(peer);
free(gosub_args);
ast_debug(1, "Gosub exited with status %d\n", res);
} else