]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_voicemail: Fix phantom voicemail bug on rerecord
authorNaveen Albert <asterisk@phreaknet.org>
Sun, 24 Oct 2021 12:31:37 +0000 (12:31 +0000)
committerGeorge Joseph <gjoseph@digium.com>
Mon, 8 Nov 2021 17:28:21 +0000 (11:28 -0600)
If users are able to press # for options while leaving
a message and then press 3 to rerecord the message, if
the caller hangs up during the rerecord prompt but before
Asterisk starts recording a message, then an "empty"
voicemail gets processed whereby an email gets sent out
notifying the user of a 0:00 duration message. The file
doesn't actually exist, so playback will fail since there
was no message to begin with.

This adds a check after the streaming of the rerecord
announcement to see if the caller has hung up. If so,
we bail out early so that we can clean up properly.

ASTERISK-29391 #close

Change-Id: Id965d72759a2fd3b39afb76fec08aaebebe75c31

apps/app_voicemail.c

index cb70ed6ff5477dd8ae450f544b4ea0f30b220640..39bfd93a1f65b64fe4ee5eb6337ea53df0cb2072 100644 (file)
@@ -15590,6 +15590,12 @@ static int play_record_review(struct ast_channel *chan, char *playfile, char *re
                                }
                                cmd = ast_play_and_wait(chan, "beep");
                        }
+                       if (cmd == -1) {
+                               /* User has hung up, no options to give */
+                               ast_debug(1, "User hung up before message could be rerecorded\n");
+                               ast_filedelete(tempfile, NULL);
+                               return cmd;
+                       }
                        recorded = 1;
                        /* After an attempt has been made to record message, we have to take care of INTRO and beep for incoming messages, but not for greetings */
                        if (record_gain)