From: Jonathan Rose Date: Tue, 19 Aug 2014 16:20:59 +0000 (+0000) Subject: ARI: Fix a bug where /channels/{channelID}/continue doesn't execute PBX X-Git-Tag: 12.6.0-rc1~73 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=224231f526e601e2ec8ff5843926351e6f152d5b;p=thirdparty%2Fasterisk.git ARI: Fix a bug where /channels/{channelID}/continue doesn't execute PBX If /channels/{channelID}/continue is called on a channel that was originated without a PBX (such as the ARI command POST channel with a stasis application argument), the channel will not start dialplan execution. This patch will now run the PBX out of the stasis execution if the channel doesn't currently have an active PBX upon continuing. ASTERISK-24043 #close Reported by: Krandon Bruse Review: https://reviewboard.asterisk.org/r/3917/ Patches: stasis-continue.diff submitted by Krandon Bruse (license 6631) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@421416 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/res/res_stasis.c b/res/res_stasis.c index 50e1ed7045..23bb93836e 100644 --- a/res/res_stasis.c +++ b/res/res_stasis.c @@ -1327,6 +1327,22 @@ int stasis_app_exec(struct ast_channel *chan, const char *app_name, int argc, */ cleanup(); + /* The control needs to be removed from the controls container in + * case a new PBX is started and ends up coming back into Stasis. + */ + ao2_cleanup(app); + app = NULL; + control_unlink(control); + control = NULL; + + if (!ast_check_hangup_locked(chan) && !ast_channel_pbx(chan)) { + struct ast_pbx_args pbx_args = { + .no_hangup_chan = 1, + }; + + res = ast_pbx_run_args(chan, &pbx_args); + } + return res; }