]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
automerge commit
authorAutomerge script <automerge@asterisk.org>
Wed, 13 Sep 2006 20:02:40 +0000 (20:02 +0000)
committerAutomerge script <automerge@asterisk.org>
Wed, 13 Sep 2006 20:02:40 +0000 (20:02 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@42909 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index fa86fe173ca8c1f0942ca5f6a34b34cc8775512f..1672144e8724f12c0e6b3a45ee5a71bce5ce48b6 100644 (file)
@@ -6468,8 +6468,6 @@ static int advanced_options(struct ast_channel *chan, struct ast_vm_user *vmu, s
        if (!strncasecmp("macro",context,5)) /* Macro names in contexts are useless for our needs */
                context = ast_variable_retrieve(msg_cfg, "message","macrocontext");
 
-       ast_config_destroy(msg_cfg);
-
        if (option == 3) {
 
                if (!res)
@@ -6489,8 +6487,10 @@ static int advanced_options(struct ast_channel *chan, struct ast_vm_user *vmu, s
                                                if (num) {
                                                        /* Dial the CID number */
                                                        res = dialout(chan, vmu, num, vmu->callback);
-                                                       if (res)
+                                                       if (res) {
+                                                               ast_config_destroy(msg_cfg);
                                                                return 9;
+                                                       }
                                                } else {
                                                        res = '2';
                                                }
@@ -6500,13 +6500,16 @@ static int advanced_options(struct ast_channel *chan, struct ast_vm_user *vmu, s
                                                /* Want to enter a different number, can only do this if there's a dialout context for this user */
                                                if (!ast_strlen_zero(vmu->dialout)) {
                                                        res = dialout(chan, vmu, NULL, vmu->dialout);
-                                                       if (res)
+                                                       if (res) {
+                                                               ast_config_destroy(msg_cfg);
                                                                return 9;
+                                                       }
                                                } else {
                                                        if (option_verbose > 2)
                                                                ast_verbose( VERBOSE_PREFIX_3 "Caller can not specify callback number - no dialout context available\n");
                                                        res = ast_play_and_wait(chan, "vm-sorry");
                                                }
+                                               ast_config_destroy(msg_cfg);
                                                return res;
                                        case '*':
                                                res = 't';
@@ -6573,6 +6576,7 @@ static int advanced_options(struct ast_channel *chan, struct ast_vm_user *vmu, s
                                        ast_verbose(VERBOSE_PREFIX_3 "No CID number available, no reply sent\n");
                                if (!res)
                                        res = ast_play_and_wait(chan, "vm-nonumber");
+                               ast_config_destroy(msg_cfg);
                                return res;
                        } else {
                                if (find_user(NULL, vmu->context, num)) {
@@ -6586,6 +6590,7 @@ static int advanced_options(struct ast_channel *chan, struct ast_vm_user *vmu, s
                                        memset(&leave_options, 0, sizeof(leave_options));
                                        leave_options.record_gain = record_gain;
                                        res = leave_voicemail(chan, mailbox, &leave_options);
+                                       ast_config_destroy(msg_cfg);
                                        if (!res)
                                                res = 't';
                                        return res;
@@ -6594,6 +6599,7 @@ static int advanced_options(struct ast_channel *chan, struct ast_vm_user *vmu, s
                                        if (option_verbose > 2)
                                                ast_verbose( VERBOSE_PREFIX_3 "No mailbox number '%s' in context '%s', no reply sent\n", num, vmu->context);
                                        ast_play_and_wait(chan, "vm-nobox");
+                                       ast_config_destroy(msg_cfg);
                                        res = 't';
                                        return res;
                                }
@@ -6607,6 +6613,7 @@ static int advanced_options(struct ast_channel *chan, struct ast_vm_user *vmu, s
                vms->heard[msg] = 1;
                res = wait_file(chan, vms, vms->fn);
        }
+       ast_config_destroy(msg_cfg);
        return res;
 }