]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Change where priority of a goto is adjusted.
authorJason Parker <jparker@digium.com>
Tue, 5 Feb 2008 20:51:50 +0000 (20:51 +0000)
committerJason Parker <jparker@digium.com>
Tue, 5 Feb 2008 20:51:50 +0000 (20:51 +0000)
Partially reverts 102272.

Closes issue #11929
(credit to file for fix suggestion - we still <3 you)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@102500 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/pbx.c

index c3ba34335fbff81481ceecbc4cf23298def020b6..4578b32c2ae807a2028b27713f5bb8a355d6233b 100644 (file)
@@ -5853,8 +5853,12 @@ 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);
 
@@ -5868,7 +5872,7 @@ int ast_async_goto(struct ast_channel *chan, const char *context, const char *ex
        ast_channel_lock(chan);
 
        if (chan->pbx) { /* This channel is currently in the PBX */
-               ast_explicit_goto(chan, context, exten, priority);
+               ast_explicit_goto(chan, context, exten, priority + 1);
                ast_softhangup_nolock(chan, AST_SOFTHANGUP_ASYNCGOTO);
        } else {
                /* In order to do it when the channel doesn't really exist within