[asterisk-commits] jpeeler: branch 1.4 r300918 - /branches/1.4/apps/app_voicemail.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Jan 7 17:13:27 UTC 2011


Author: jpeeler
Date: Fri Jan  7 11:13:21 2011
New Revision: 300918

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=300918
Log:
Ensure good bye prompt in voicemail is played at the correct time.

Specifically in the case of timing out but not leaving voicemail nothing
should be heard. And when leaving voicemail it should be heard.

ABE-2647

Modified:
    branches/1.4/apps/app_voicemail.c

Modified: branches/1.4/apps/app_voicemail.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.4/apps/app_voicemail.c?view=diff&rev=300918&r1=300917&r2=300918
==============================================================================
--- branches/1.4/apps/app_voicemail.c (original)
+++ branches/1.4/apps/app_voicemail.c Fri Jan  7 11:13:21 2011
@@ -4510,7 +4510,7 @@
 		}
 		if (res == '0') {
 			goto transfer;
-		} else if (res > 0)
+		} else if (res > 0 && res != 't')
 			res = 0;
 
 		if (duration < vmminmessage)
@@ -5337,7 +5337,7 @@
 	return 0;
 }
 
-static int forward_message(struct ast_channel *chan, char *context, struct vm_state *vms, struct ast_vm_user *sender, char *fmt, int flag, signed char record_gain)
+static int forward_message(struct ast_channel *chan, char *context, struct vm_state *vms, struct ast_vm_user *sender, char *fmt, int noforward, signed char record_gain)
 {
 #ifdef IMAP_STORAGE
 	int todircount=0;
@@ -5452,8 +5452,8 @@
 		/* start optimistic */
 		valid_extensions = 1;
 		while (s) {
-			/* Don't forward to ourselves but allow leaving a message for ourselves (flag == 1).  find_user is going to malloc since we have a NULL as first argument */
-			if ((flag == 1 || strcmp(s,sender->mailbox)) && (receiver = find_user(NULL, context, s))) {
+			/* Don't forward to ourselves but allow leaving a message for ourselves (noforward == 1).  find_user is going to malloc since we have a NULL as first argument */
+			if ((noforward == 1 || strcmp(s,sender->mailbox)) && (receiver = find_user(NULL, context, s))) {
 				int oldmsgs;
 				int newmsgs;
 				int capacity;
@@ -5493,7 +5493,7 @@
 	/* check if we're clear to proceed */
 	if (AST_LIST_EMPTY(&extensions) || !valid_extensions)
 		return res;
-	if (flag==1) {
+	if (noforward == 1) {
 		struct leave_vm_options leave_options;
 		char mailbox[AST_MAX_EXTENSION * 2 + 2];
 		/* Make sure that context doesn't get set as a literal "(null)" (or else find_user won't find it) */
@@ -8246,6 +8246,11 @@
 	}
 
 	res = leave_voicemail(chan, args.argv0, &leave_options);
+	if (res == 't') {
+		ast_play_and_wait(chan, "vm-goodbye");
+		res = 0;
+	}
+
 	if (res == OPERATOR_EXIT) {
 		res = 0;
 	}
@@ -9651,10 +9656,10 @@
 		/* 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 */
+
+	if (cmd != 't' && outsidecaller)
 		ast_play_and_wait(chan, "vm-goodbye");
+
 	return cmd;
 }
 




More information about the asterisk-commits mailing list