[asterisk-commits] jpeeler: trunk r292228 - in /trunk: ./ apps/app_voicemail.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Oct 18 16:56:47 CDT 2010


Author: jpeeler
Date: Mon Oct 18 16:56:45 2010
New Revision: 292228

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=292228
Log:
Merged revisions 292227 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.8

................
  r292227 | jpeeler | 2010-10-18 16:55:46 -0500 (Mon, 18 Oct 2010) | 25 lines
  
  Merged revisions 292226 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.6.2
  
  ................
    r292226 | jpeeler | 2010-10-18 16:54:38 -0500 (Mon, 18 Oct 2010) | 18 lines
    
    Merged revisions 292223 via svnmerge from 
    https://origsvn.digium.com/svn/asterisk/branches/1.4
    
    ........
      r292223 | jpeeler | 2010-10-18 16:50:30 -0500 (Mon, 18 Oct 2010) | 11 lines
      
      Fix improper operator key acceptance and clean up temp recording files.
      
      This is a fix for when pressing the operator key after recording an unavailable,
      busy, name, or temporary message in mailbox options. The operator key should not
      be accepted here, but should be allowed during the message recording. If the
      operator key is pressed during ensure the file is saved or deleted as
      apporopriate.  Also, ensure removal of temporary recorded files after an early
      hang up or when message acceptance confirmation times out.
      
      ABE-2518
    ........
  ................
................

Modified:
    trunk/   (props changed)
    trunk/apps/app_voicemail.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.

Modified: trunk/apps/app_voicemail.c
URL: http://svnview.digium.com/svn/asterisk/trunk/apps/app_voicemail.c?view=diff&rev=292228&r1=292227&r2=292228
==============================================================================
--- trunk/apps/app_voicemail.c (original)
+++ trunk/apps/app_voicemail.c Mon Oct 18 16:56:45 2010
@@ -12888,6 +12888,7 @@
 	char tempfile[PATH_MAX];
 	char *acceptdtmf = "#";
 	char *canceldtmf = "";
+	int canceleddtmf = 0;
 
 	/* Note that urgent and private are for flagging messages as such in the future */
 
@@ -12949,6 +12950,10 @@
 			if (ast_test_flag(vmu, VM_OPERATOR))
 				canceldtmf = "0";
 			cmd = ast_play_and_record_full(chan, playfile, tempfile, maxtime, fmt, duration, silencethreshold, maxsilence, unlockdir, acceptdtmf, canceldtmf);
+			if (strchr(canceldtmf, cmd)) {
+			/* need this flag here to distinguish between pressing '0' during message recording or after */
+				canceleddtmf = 1;
+			}
 			if (record_gain)
 				ast_channel_setoption(chan, AST_OPTION_RXGAIN, &zero_gain, sizeof(zero_gain), 0);
 			if (cmd == -1) {
@@ -13028,7 +13033,7 @@
 				return 1;
 #endif
 		case '0':
-			if (!ast_test_flag(vmu, VM_OPERATOR) || !outsidecaller) {
+			if (!ast_test_flag(vmu, VM_OPERATOR) || (!canceleddtmf && !outsidecaller)) {
 				cmd = ast_play_and_wait(chan, "vm-sorry");
 				break;
 			}
@@ -13037,6 +13042,7 @@
 				if (!cmd)
 					cmd = ast_waitfordigit(chan, 3000);
 				if (cmd == '1') {
+					ast_filerename(tempfile, recordfile, NULL);
 					ast_play_and_wait(chan, "vm-msgsaved");
 					cmd = '0';
 				} else if (cmd == '4') {
@@ -13048,7 +13054,7 @@
 					cmd = '0';
 				} else {
 					ast_play_and_wait(chan, "vm-deleted");
-					DELETE(recordfile, -1, recordfile, vmu);
+					DELETE(tempfile, -1, tempfile, vmu);
 					cmd = '0';
 				}
 			}
@@ -13093,6 +13099,10 @@
 			}
 		}
 	}
+	if (!outsidecaller && (cmd == -1 || cmd == 't')) {
+		/* Hang up or timeout, so delete the recording. */
+		ast_filedelete(tempfile, NULL);
+	}
 	if (cmd == 't')
 		cmd = 0;
 	else if (outsidecaller) /* won't play if time out occurs */




More information about the asterisk-commits mailing list