[asterisk-commits] qwell: branch 1.4 r68211 - in /branches/1.4: ./
apps/app_voicemail.c
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Thu Jun 7 13:06:01 MST 2007
Author: qwell
Date: Thu Jun 7 15:06:00 2007
New Revision: 68211
URL: http://svn.digium.com/view/asterisk?view=rev&rev=68211
Log:
Merged revisions 68204 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2
........
r68204 | qwell | 2007-06-07 15:02:50 -0500 (Thu, 07 Jun 2007) | 4 lines
Don't try to save voicemail greetings unless the user presses '1' to accept/save.
Issue 9904, patch by me.
........
Modified:
branches/1.4/ (props changed)
branches/1.4/apps/app_voicemail.c
Propchange: branches/1.4/
------------------------------------------------------------------------------
Binary property 'branch-1.2-merged' - no diff available.
Modified: branches/1.4/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/apps/app_voicemail.c?view=diff&rev=68211&r1=68210&r2=68211
==============================================================================
--- branches/1.4/apps/app_voicemail.c (original)
+++ branches/1.4/apps/app_voicemail.c Thu Jun 7 15:06:00 2007
@@ -8042,6 +8042,7 @@
int recorded = 0;
int message_exists = 0;
signed char zero_gain = 0;
+ char tempfile[PATH_MAX];
char *acceptdtmf = "#";
char *canceldtmf = "";
@@ -8052,6 +8053,11 @@
ast_log(LOG_WARNING, "Error play_record_review called without duration pointer\n");
return -1;
}
+
+ if (!outsidecaller)
+ snprintf(tempfile, sizeof(tempfile), "%s.tmp", recordfile);
+ else
+ ast_copy_string(tempfile, recordfile, sizeof(tempfile));
cmd = '3'; /* Want to start by recording */
@@ -8066,9 +8072,10 @@
/* Otherwise 1 is to save the existing message */
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Saving message as is\n");
+ if (!outsidecaller)
+ ast_filerename(tempfile, recordfile, NULL);
ast_stream_and_wait(chan, "vm-msgsaved", chan->language, "");
- if (!outsidecaller)
- {
+ if (!outsidecaller) {
STORE(recordfile, vmu->mailbox, vmu->context, -1, chan, vmu, fmt, *duration, vms);
DISPOSE(recordfile, -1);
}
@@ -8079,7 +8086,7 @@
/* Review */
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Reviewing the message\n");
- cmd = ast_stream_and_wait(chan, recordfile, chan->language, AST_DIGIT_ANY);
+ cmd = ast_stream_and_wait(chan, tempfile, chan->language, AST_DIGIT_ANY);
break;
case '3':
message_exists = 0;
@@ -8101,11 +8108,15 @@
ast_channel_setoption(chan, AST_OPTION_RXGAIN, &record_gain, sizeof(record_gain), 0);
if (ast_test_flag(vmu, VM_OPERATOR))
canceldtmf = "0";
- cmd = ast_play_and_record_full(chan, playfile, recordfile, maxtime, fmt, duration, silencethreshold, maxsilence, unlockdir, acceptdtmf, canceldtmf);
+ cmd = ast_play_and_record_full(chan, playfile, tempfile, maxtime, fmt, duration, silencethreshold, maxsilence, unlockdir, acceptdtmf, canceldtmf);
if (record_gain)
ast_channel_setoption(chan, AST_OPTION_RXGAIN, &zero_gain, sizeof(zero_gain), 0);
if (cmd == -1) {
- /* User has hung up, no options to give */
+ /* User has hung up, no options to give */
+ if (!outsidecaller) {
+ /* user was recording a greeting and they hung up, so let's delete the recording. */
+ vm_delete(tempfile);
+ }
return cmd;
}
if (cmd == '0') {
@@ -8119,14 +8130,14 @@
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Message too short\n");
cmd = ast_play_and_wait(chan, "vm-tooshort");
- cmd = vm_delete(recordfile);
+ cmd = vm_delete(tempfile);
break;
}
else if (vmu->review && (cmd == 2 && *duration < (maxsilence + 3))) {
/* Message is all silence */
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Nothing recorded\n");
- cmd = vm_delete(recordfile);
+ cmd = vm_delete(tempfile);
cmd = ast_play_and_wait(chan, "vm-nothingrecorded");
if (!cmd)
cmd = ast_play_and_wait(chan, "vm-speakup");
@@ -8155,7 +8166,7 @@
case '*':
/* Cancel recording, delete message, offer to take another message*/
cmd = ast_play_and_wait(chan, "vm-deleted");
- cmd = vm_delete(recordfile);
+ cmd = vm_delete(tempfile);
if (outsidecaller) {
res = vm_exec(chan, NULL);
return res;
More information about the asterisk-commits
mailing list