[Asterisk-cvs] asterisk/apps app_voicemail.c,1.81,1.82

jeremy at lists.digium.com jeremy at lists.digium.com
Thu Apr 29 22:01:14 CDT 2004


Update of /usr/cvsroot/asterisk/apps
In directory mongoose.digium.com:/tmp/cvs-serv19662

Modified Files:
	app_voicemail.c 
Log Message:
rollback bug#77..the right fix immanent


Index: app_voicemail.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_voicemail.c,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -d -r1.81 -r1.82
--- app_voicemail.c	30 Apr 2004 01:18:26 -0000	1.81
+++ app_voicemail.c	30 Apr 2004 02:08:12 -0000	1.82
@@ -1078,7 +1078,7 @@
 		return -1;
 	}
 	ast_dsp_set_threshold(sildet, silencethreshold);
-
+	
 	if (maxsilence > 0) {
 		rfmt = chan->readformat;
 		res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
@@ -1149,7 +1149,7 @@
 				/* stop recording with any digit */
 				if (option_verbose > 2) 
 					ast_verbose( VERBOSE_PREFIX_3 "User ended message by pressing %c\n", f->subclass);
-				res = 't';
+				res = f->subclass;
 				outmsg = 2;
 				ast_frfree(f);
 				break;
@@ -1221,7 +1221,7 @@
 	if (outmsg) {
 		if (outmsg > 1) {
 			/* Let them know it worked */
-			ast_streamfile(chan, "auth-thankyou", chan->language);
+			ast_streamfile(chan, "vm-msgsaved", chan->language);
 			ast_waitstream(chan, "");
 		}
 	}	
@@ -1289,7 +1289,7 @@
 		return -1;
 	}
 	ast_dsp_set_threshold(sildet, silencethreshold);
-	
+
 	if (maxsilence > 0) {
 		rfmt = chan->readformat;
 		res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
@@ -1705,7 +1705,7 @@
 static int say_and_wait(struct ast_channel *chan, int num)
 {
 	int d;
-	d = ast_say_number(chan, num, AST_DIGIT_ANY, chan->language);
+	d = ast_say_number(chan, num, AST_DIGIT_ANY, chan->language, (char *) NULL);
 	return d;
 }
 
@@ -2269,7 +2269,7 @@
 	if (d)
 		return d;
 	for (x = start; x< 5; x++) {
-		if ((d = ast_say_number(chan, x, AST_DIGIT_ANY, chan->language)))
+		if ((d = ast_say_number(chan, x, AST_DIGIT_ANY, chan->language, (char *) NULL)))
 			return d;
 		d = play_and_wait(chan, "vm-for");
 		if (d)
@@ -2308,7 +2308,7 @@
 	int cmd = 0;
 	int retries = 0;
 
-	while((cmd >= 0) && (cmd != 't') && (cmd != '*')) {
+	while((cmd >= 0) && (cmd != 't') && (cmd != '#')) {
 		if (cmd)
 			retries = 0;
 		switch (cmd) {
@@ -2323,14 +2323,12 @@
 		case '2': 
 			cmd = 't';
 			break;
-		case '*':
-			cmd = '*';
+		case '#':
+			cmd = '#';
 			break;
 		default: 
 			cmd = play_and_wait(chan,"vm-forwardoptions");
 			if (!cmd)
-				cmd = play_and_wait(chan,"vm-starmain");
-			if (!cmd)
 				cmd = ast_waitfordigit(chan,6000);
 			if (!cmd)
 				retries++;
@@ -2400,83 +2398,79 @@
 		return res;
 	vmtmp = extensions;
 	cmd = vm_forwardoptions(chan, sender, dir, curmsg, vmfmts, context);
-	if (!cmd) {
-		while(!res && vmtmp) {
-			/* if (play_and_wait(chan, "vm-savedto"))
-				break;
-			*/
-			snprintf(todir, sizeof(todir), "%s/voicemail/%s/%s/INBOX",  (char *)ast_config_AST_SPOOL_DIR, vmtmp->context, vmtmp->mailbox);
-			snprintf(sys, sizeof(sys), "mkdir -p %s\n", todir);
-			ast_log(LOG_DEBUG, sys);
-			ast_safe_system(sys);
-	
-			todircount = count_messages(todir);
-			strncpy(tmp, fmt, sizeof(tmp) - 1);
-			stringp = tmp;
-			while((s = strsep(&stringp, "|"))) {
-				/* XXX This is a hack -- we should use build_filename or similar XXX */
-				if (!strcasecmp(s, "wav49"))
-					s = "WAV";
-				snprintf(sys, sizeof(sys), "cp %s/msg%04d.%s %s/msg%04d.%s\n", dir, curmsg, s, todir, todircount, s);
-				ast_log(LOG_DEBUG, sys);
-				ast_safe_system(sys);
-			}
-			snprintf(sys, sizeof(sys), "cp %s/msg%04d.txt %s/msg%04d.txt\n", dir, curmsg, todir, todircount);
+
+	while(!res && vmtmp) {
+		/* if (play_and_wait(chan, "vm-savedto"))
+			break;
+		*/
+		snprintf(todir, sizeof(todir), "%s/voicemail/%s/%s/INBOX",  (char *)ast_config_AST_SPOOL_DIR, vmtmp->context, vmtmp->mailbox);
+		snprintf(sys, sizeof(sys), "mkdir -p %s\n", todir);
+		ast_log(LOG_DEBUG, sys);
+		ast_safe_system(sys);
+
+		todircount = count_messages(todir);
+		strncpy(tmp, fmt, sizeof(tmp) - 1);
+		stringp = tmp;
+		while((s = strsep(&stringp, "|"))) {
+			/* XXX This is a hack -- we should use build_filename or similar XXX */
+			if (!strcasecmp(s, "wav49"))
+				s = "WAV";
+			snprintf(sys, sizeof(sys), "cp %s/msg%04d.%s %s/msg%04d.%s\n", dir, curmsg, s, todir, todircount, s);
 			ast_log(LOG_DEBUG, sys);
 			ast_safe_system(sys);
-			snprintf(fn, sizeof(fn), "%s/msg%04d", todir,todircount);
-	
-			/* load the information on the source message so we can send an e-mail like a new message */
-			snprintf(miffile, sizeof(miffile), "%s/msg%04d.txt", dir, curmsg);
-			if ((mif=ast_load(miffile))) {
-	
-				/* set callerid and duration variables */
-				snprintf(callerid, sizeof(callerid), "FWD from: %s from %s", sender->fullname, ast_variable_retrieve(mif, NULL, "callerid"));
-				s = ast_variable_retrieve(mif, NULL, "duration");
-				if (s)
-					duration = atol(s);
-				else
-					duration = 0;
-				if (strlen(vmtmp->email)) {
-					int attach_user_voicemail = attach_voicemail;
-					char *myserveremail = serveremail;
-					if (vmtmp->attach > -1)
-						attach_user_voicemail = vmtmp->attach;
-					if (strlen(vmtmp->serveremail))
-						myserveremail = vmtmp->serveremail;
-					sendmail(myserveremail, vmtmp, todircount, vmtmp->mailbox, callerid, fn, tmp, duration, attach_user_voicemail);
-				}
-			     
-				if (strlen(vmtmp->pager)) {
-					char *myserveremail = serveremail;
-					if (strlen(vmtmp->serveremail))
-						myserveremail = vmtmp->serveremail;
-					sendpage(myserveremail, vmtmp->pager, todircount, vmtmp->mailbox, callerid, duration, vmtmp);
-				}
-				  
-				ast_destroy(mif); /* or here */
-			}
-			/* Leave voicemail for someone */
-			manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox));
-			run_externnotify(chan->context, vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox));
-	
-			saved_messages++;
-			vmfree = vmtmp;
-			vmtmp = vmtmp->next;
-			free_user(vmfree);
 		}
-		if (saved_messages > 0) {
-			/* give confirmatopm that the message was saved */
-			/* commented out since we can't forward batches yet
-			if (saved_messages == 1)
-				res = play_and_wait(chan, "vm-message");
+		snprintf(sys, sizeof(sys), "cp %s/msg%04d.txt %s/msg%04d.txt\n", dir, curmsg, todir, todircount);
+		ast_log(LOG_DEBUG, sys);
+		ast_safe_system(sys);
+		snprintf(fn, sizeof(fn), "%s/msg%04d", todir,todircount);
+
+		/* load the information on the source message so we can send an e-mail like a new message */
+		snprintf(miffile, sizeof(miffile), "%s/msg%04d.txt", dir, curmsg);
+		if ((mif=ast_load(miffile))) {
+
+			/* set callerid and duration variables */
+			snprintf(callerid, sizeof(callerid), "FWD from: %s from %s", sender->fullname, ast_variable_retrieve(mif, NULL, "callerid"));
+			s = ast_variable_retrieve(mif, NULL, "duration");
+			if (s)
+				duration = atol(s);
 			else
-				res = play_and_wait(chan, "vm-messages");
-			if (!res)
-				res = play_and_wait(chan, "vm-saved"); */
-			if (!res)
-				res = play_and_wait(chan, "vm-msgsaved");
+				duration = 0;
+			if (strlen(vmtmp->email)) {
+				int attach_user_voicemail = attach_voicemail;
+				char *myserveremail = serveremail;
+				if (vmtmp->attach > -1)
+					attach_user_voicemail = vmtmp->attach;
+				if (strlen(vmtmp->serveremail))
+					myserveremail = vmtmp->serveremail;
+				sendmail(myserveremail, vmtmp, todircount, vmtmp->mailbox, callerid, fn, tmp, duration, attach_user_voicemail);
+			}
+		     
+			if (strlen(vmtmp->pager)) {
+				char *myserveremail = serveremail;
+				if (strlen(vmtmp->serveremail))
+					myserveremail = vmtmp->serveremail;
+				sendpage(myserveremail, vmtmp->pager, todircount, vmtmp->mailbox, callerid, duration, vmtmp);
+			}
+			  
+			ast_destroy(mif); /* or here */
 		}
+		/* Leave voicemail for someone */
+		manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox));
+		run_externnotify(chan->context, vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox));
+
+		saved_messages++;
+		vmfree = vmtmp;
+		vmtmp = vmtmp->next;
+		free_user(vmfree);
+	}
+	if (saved_messages > 0) {
+		/* give confirmatopm that the message was saved */
+		if (saved_messages == 1)
+			res = play_and_wait(chan, "vm-message");
+		else
+			res = play_and_wait(chan, "vm-messages");
+		if (!res)
+			res = play_and_wait(chan, "vm-saved");
 	}
 	return res ? res : cmd;
 }
@@ -2639,7 +2633,7 @@
 		res = wait_file2(chan, vms, "vm-message");
 		if (msg && (msg != vms->lastmsg)) {
 			if (!res)
-				res = ast_say_number(chan, msg + 1, AST_DIGIT_ANY, chan->language);
+				res = ast_say_number(chan, msg + 1, AST_DIGIT_ANY, chan->language, (char *) NULL);
 		}
 	}
 




More information about the svn-commits mailing list