]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
ARI: Fix a bug where /channels/{channelID}/continue doesn't execute PBX
authorJonathan Rose <jrose@digium.com>
Tue, 19 Aug 2014 16:36:30 +0000 (16:36 +0000)
committerJonathan Rose <jrose@digium.com>
Tue, 19 Aug 2014 16:36:30 +0000 (16:36 +0000)
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)
........

Merged revisions 421416 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 421423 from http://svn.asterisk.org/svn/asterisk/branches/13

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

res/res_stasis.c

index 4bf9e4932b7223f15e03dbf31fb09e62ea79fec2..b03da0169bfb00c58f817f53431ca894917c1582 100644 (file)
@@ -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;
 }