app_voicemail: Honor escape digits in "greeting only" mode
authorSean Bright <sean.bright@gmail.com>
Wed, 23 Aug 2017 14:19:35 +0000 (10:19 -0400)
committerSean Bright <sean.bright@gmail.com>
Thu, 24 Aug 2017 14:04:13 +0000 (09:04 -0500)
ASTERISK-21241 #close
Reported by: Eelco Brolman
Patches:
Patch uploaded by Eelco Brolman (License 6442)

Change-Id: Icbe39b5c82a49b46cf1d168dc17766f3d84f54fe

apps/app_voicemail.c

index 5f82128..f1b8bd1 100644 (file)
@@ -6488,6 +6488,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_
        int ausemacro = 0;
        int ousemacro = 0;
        int ouseexten = 0;
+       int greeting_only = 0;
        char tmpdur[16];
        char priority[16];
        char origtime[16];
@@ -6547,6 +6548,13 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_
                ast_free(tmp);
                return res;
        }
+
+       /* If maxmsg is zero, act as a "greetings only" voicemail: Exit successfully without recording */
+       if (vmu->maxmsg == 0) {
+               greeting_only = 1;
+               ast_set_flag(options, OPT_SILENT);
+       }
+
        /* Setup pre-file if appropriate */
        if (strcmp(vmu->context, "default"))
                snprintf(ext_context, sizeof(ext_context), "%s@%s", ext, vmu->context);
@@ -6671,12 +6679,6 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_
                ast_set_flag(options, OPT_SILENT);
                res = 0;
        }
-       /* If maxmsg is zero, act as a "greetings only" voicemail: Exit successfully without recording */
-       if (vmu->maxmsg == 0) {
-               ast_debug(3, "Greetings only VM (maxmsg=0), Skipping voicemail recording\n");
-               pbx_builtin_setvar_helper(chan, "VMSTATUS", "SUCCESS");
-               goto leave_vm_out;
-       }
        if (!res && !ast_test_flag(options, OPT_SILENT)) {
                res = ast_stream_and_wait(chan, INTRO, ecodes);
                if (res == '#') {
@@ -6732,6 +6734,13 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_
                return res;
        }
 
+       if (greeting_only) {
+               ast_debug(3, "Greetings only VM (maxmsg=0), Skipping voicemail recording\n");
+               pbx_builtin_setvar_helper(chan, "VMSTATUS", "SUCCESS");
+               res = 0;
+               goto leave_vm_out;
+       }
+
        if (res < 0) {
                free_user(vmu);
                pbx_builtin_setvar_helper(chan, "VMSTATUS", "FAILED");