AGI may be invoked from outside the dialplan
authorTilghman Lesher <tilghman@meg.abyt.es>
Wed, 23 Dec 2009 18:25:27 +0000 (18:25 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Wed, 23 Dec 2009 18:25:27 +0000 (18:25 +0000)
(closes issue #16510)
 Reported by: atis
 Patches:
       20091223__issue16510.diff.txt uploaded by tilghman (license 14)
 Tested by: atis

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

apps/app_stack.c

index 5ee22e5..08246d1 100644 (file)
@@ -605,12 +605,12 @@ static int handle_gosub(struct ast_channel *chan, AGI *agi, int argc, const char
         * call a Gosub for the CALLEE channel in Dial or Queue.
         */
        if (argc == 5) {
         * call a Gosub for the CALLEE channel in Dial or Queue.
         */
        if (argc == 5) {
-               if (asprintf(&gosub_args, "%s,%s,%d(%s)", argv[1], argv[2], priority + 1, argv[4]) < 0) {
+               if (asprintf(&gosub_args, "%s,%s,%d(%s)", argv[1], argv[2], priority + (chan->pbx ? 1 : 0), argv[4]) < 0) {
                        ast_log(LOG_WARNING, "asprintf() failed: %s\n", strerror(errno));
                        gosub_args = NULL;
                }
        } else {
                        ast_log(LOG_WARNING, "asprintf() failed: %s\n", strerror(errno));
                        gosub_args = NULL;
                }
        } else {
-               if (asprintf(&gosub_args, "%s,%s,%d", argv[1], argv[2], priority + 1) < 0) {
+               if (asprintf(&gosub_args, "%s,%s,%d", argv[1], argv[2], priority + (chan->pbx ? 1 : 0)) < 0) {
                        ast_log(LOG_WARNING, "asprintf() failed: %s\n", strerror(errno));
                        gosub_args = NULL;
                }
                        ast_log(LOG_WARNING, "asprintf() failed: %s\n", strerror(errno));
                        gosub_args = NULL;
                }