]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 91273 via svnmerge from
authorMark Michelson <mmichelson@digium.com>
Wed, 5 Dec 2007 22:55:49 +0000 (22:55 +0000)
committerMark Michelson <mmichelson@digium.com>
Wed, 5 Dec 2007 22:55:49 +0000 (22:55 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r91273 | mmichelson | 2007-12-05 16:35:52 -0600 (Wed, 05 Dec 2007) | 11 lines

The 'G' option for Dial() did not properly handle the case where only a label was
provided. This was due to the fact that the answering channel did not have an extension
set, so ast_parseable_goto would fail. This fix eliminates the call to ast_parseable_goto
on the answering channel since it is a wasteful call. The answering channel and the calling
channel are both directed to the same extension and context, just different priorities, so
we can just copy the values from the calling channel to the answering channel and increment
the answering channel's priority.

(closes issue #11382, reported by jon, patch by me with correction by jon)

........

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

apps/app_dial.c
apps/app_voicemail.c

index af5a877d2a8e158a26659e85f0dc2360113d9e06..b82743bfd04dd65bc32bed737e02dcd5d0160b0d 100644 (file)
@@ -1591,8 +1591,10 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
                if (chan && peer && ast_test_flag64(&opts, OPT_GOTO) && !ast_strlen_zero(opt_args[OPT_ARG_GOTO])) {
                        replace_macro_delimiter(opt_args[OPT_ARG_GOTO]);
                        ast_parseable_goto(chan, opt_args[OPT_ARG_GOTO]);
-                       ast_parseable_goto(peer, opt_args[OPT_ARG_GOTO]);
-                       peer->priority++;
+                       /* peer goes to the same context and extension as chan, so just copy info from chan*/
+                       ast_copy_string(peer->context, chan->context, sizeof(peer->context));
+                       ast_copy_string(peer->exten, chan->exten, sizeof(peer->exten));
+                       peer->priority = chan->priority + 2;
                        ast_pbx_start(peer);
                        hanguptree(outgoing, NULL, ast_test_flag64(&opts, OPT_CANCEL_ELSEWHERE) ? 1 : 0);
                        if (continue_exec)
index 7e4045d3a96cd86be85c3c2880d4f3a080b42823..7ceef6eb616984692070131866d178e35c165d3f 100644 (file)
@@ -6956,9 +6956,7 @@ static int vm_execmain(struct ast_channel *chan, void *data)
        /* Set language from config to override channel language */
        if (!ast_strlen_zero(vmu->language))
                ast_string_field_set(chan, language, vmu->language);
-#ifndef IMAP_STORAGE
        create_dirpath(vms.curdir, sizeof(vms.curdir), vmu->context, vms.username, "");
-#endif
        /* Retrieve old and new message counts */
        ast_debug(1, "Before open_mailbox\n");
        res = open_mailbox(&vms, vmu, OLD_FOLDER);