Update handling of asyncgoto so it properly works on channels that are currently...
authorJoshua Colp <jcolp@digium.com>
Mon, 4 Feb 2008 15:16:05 +0000 (15:16 +0000)
committerJoshua Colp <jcolp@digium.com>
Mon, 4 Feb 2008 15:16:05 +0000 (15:16 +0000)
(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

main/pbx.c

index 3ef14ef..c3ba343 100644 (file)
@@ -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);