From: Joshua Colp Date: Mon, 4 Feb 2008 15:16:05 +0000 (+0000) Subject: Update handling of asyncgoto so it properly works on channels that are currently... X-Git-Tag: 1.6.0-beta3~2^2~89 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c6fc44f92776ae386dea7fe87acd74349b18ba94;p=thirdparty%2Fasterisk.git 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 --- diff --git a/main/pbx.c b/main/pbx.c index 3ef14ef5af..c3ba34335f 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);