diff options
author | Matthew Jordan <mjordan@digium.com> | 2014-01-31 23:34:47 +0000 |
---|---|---|
committer | Matthew Jordan <mjordan@digium.com> | 2014-01-31 23:34:47 +0000 |
commit | f9229127311cdd6880d8d5b0c506a1f843b8ae28 (patch) | |
tree | 9186295d035bfb4647a0a205ae4f919273498892 /apps | |
parent | 10e38fb10cb07b0eb60375cc2a8cd46da86b7c5b (diff) |
app_dial: Allow macro/gosub pre-bridge execution to occur on priorities
The parsing for the destination of the macro/gosub uses the '^' character to
separate out context, extension, and priority. However, the logic for the
macro/gosub execution was written such that it would only do the actual
macro/gosub jump if a '^' character existed. This doesn't apply when the
macro/gosub jump occurs in a priority/priority label. This patch changes
the logic so that the parsing still occurs, but the jump will occur even
for priorities/priority labels.
(issue ASTERISK-23164)
Review: https://reviewboard.asterisk.org/r/3154
........
Merged revisions 407041 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 407074 from http://svn.asterisk.org/svn/asterisk/branches/11
........
Merged revisions 407082 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@407083 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps')
-rw-r--r-- | apps/app_dial.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/apps/app_dial.c b/apps/app_dial.c index 99d00f13c..6d2437ad3 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -2884,8 +2884,9 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast /* perform a transfer to a new extension */ if (strchr(macro_transfer_dest, '^')) { /* context^exten^priority*/ ast_replace_subargument_delimiter(macro_transfer_dest); - if (!ast_parseable_goto(chan, macro_transfer_dest)) - ast_set_flag64(peerflags, OPT_GO_ON); + } + if (!ast_parseable_goto(chan, macro_transfer_dest)) { + ast_set_flag64(peerflags, OPT_GO_ON); } } } else { @@ -2965,8 +2966,9 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast /* perform a transfer to a new extension */ if (strchr(gosub_transfer_dest, '^')) { /* context^exten^priority*/ ast_replace_subargument_delimiter(gosub_transfer_dest); - if (!ast_parseable_goto(chan, gosub_transfer_dest)) - ast_set_flag64(peerflags, OPT_GO_ON); + } + if (!ast_parseable_goto(chan, gosub_transfer_dest)) { + ast_set_flag64(peerflags, OPT_GO_ON); } } } else { |