summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2008-02-04 15:16:05 +0000
committerJoshua Colp <jcolp@digium.com>2008-02-04 15:16:05 +0000
commitc6fc44f92776ae386dea7fe87acd74349b18ba94 (patch)
treef7e246478d9b46f1a6ae4bf0af1e72725e6c51b5 /main
parentf910cb5cb92855d64650ddc21bf65bc25d640c1c (diff)
Update handling of asyncgoto so it properly works on channels that are currently executing a PBX.
(closes issue #11914) Reported by: arnd (closes issue #11753) Reported by: johan git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@102272 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main')
-rw-r--r--main/pbx.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/main/pbx.c b/main/pbx.c
index 3ef14ef5a..c3ba34335 100644
--- a/main/pbx.c
+++ b/main/pbx.c
@@ -3324,6 +3324,7 @@ static int __ast_pbx_run(struct ast_channel *c)
if (c->_softhangup == AST_SOFTHANGUP_ASYNCGOTO) {
c->_softhangup = 0;
+ continue;
} else if (c->_softhangup == AST_SOFTHANGUP_TIMEOUT) {
/* atimeout, nothing bad */
} else {
@@ -5852,12 +5853,8 @@ int ast_explicit_goto(struct ast_channel *chan, const char *context, const char
ast_copy_string(chan->context, context, sizeof(chan->context));
if (!ast_strlen_zero(exten))
ast_copy_string(chan->exten, exten, sizeof(chan->exten));
- if (priority > -1) {
+ if (priority > -1)
chan->priority = priority;
- /* see flag description in channel.h for explanation */
- if (ast_test_flag(chan, AST_FLAG_IN_AUTOLOOP))
- chan->priority--;
- }
ast_channel_unlock(chan);