[svn-commits] mmichelson: branch mmichelson/imap_consistency_trunk r135587 - /team/mmichels...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Aug 4 15:53:18 CDT 2008


Author: mmichelson
Date: Mon Aug  4 15:53:18 2008
New Revision: 135587

URL: http://svn.digium.com/view/asterisk?view=rev&rev=135587
Log:
Progress commit. Forwarding with prepended messages was
ALL screwed up after my merge of IMAP consistency. I've taken
some measures to help with some mix-ups which were occurring, and
everything appears to be working correctly with one exception.

That is, retrieving a message with an extra prepend attachment
appears to only grab the prepended message. The e-mail file
which is attached correctly has both attachments, and according
to my debug output, both files that I attempt to attach exist.

Once I have that sorted out, I'll just remove these silly
debug messages and get this merged to trunk finally.


Modified:
    team/mmichelson/imap_consistency_trunk/apps/app_voicemail.c

Modified: team/mmichelson/imap_consistency_trunk/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/team/mmichelson/imap_consistency_trunk/apps/app_voicemail.c?view=diff&rev=135587&r1=135586&r2=135587
==============================================================================
--- team/mmichelson/imap_consistency_trunk/apps/app_voicemail.c (original)
+++ team/mmichelson/imap_consistency_trunk/apps/app_voicemail.c Mon Aug  4 15:53:18 2008
@@ -1458,7 +1458,8 @@
 	}
 	
 	make_file(vms->fn, sizeof(vms->fn), dir, msgnum);
-	snprintf(vms->introfn, sizeof(vms->introfn), "%sintro", vms->fn);
+
+	ast_log(LOG_NOTICE, "The filenames are %s and %s\n", vms->fn, vms->introfn);
 
 	/* Don't try to retrieve a message from IMAP if it already is on the file system */
 	if (ast_fileexists(vms->fn, NULL, NULL) > 0) {
@@ -1504,13 +1505,10 @@
 	}
 	
 	save_body(body, vms, "2", attachedfilefmt, 0);
-	/* A non-zero return here means that there is no prepended
-	 * message saved here. We need to null the vms->introfn so
-	 * that nothing attempts to play a nonexistent file later
-	 */
-	if (save_body(body, vms, "3", attachedfilefmt, 1)) {
-		*vms->introfn = '\0';
-	}
+	save_body(body, vms, "3", attachedfilefmt, 1);
+
+	ast_log(LOG_NOTICE, "Now the filenames are %s and %s\n", vms->fn, vms->introfn);
+	ast_log(LOG_NOTICE, "BREAKPOINT!!!\n");
 
 	/* Get info from headers!! */
 	snprintf(text_file, sizeof(text_file), "%s.%s", vms->fn, "txt");
@@ -1710,6 +1708,7 @@
 {
 	char *myserveremail = serveremail;
 	char fn[PATH_MAX];
+	char introfn[PATH_MAX];
 	char mailbox[256];
 	char *stringp;
 	FILE *p=NULL;
@@ -1739,6 +1738,11 @@
 		make_file(fn, sizeof(fn), dir, msgnum);
 	else
 		ast_copy_string (fn, dir, sizeof(fn));
+
+	snprintf(introfn, sizeof(introfn), "%sintro", fn);
+	if (ast_fileexists(introfn, NULL, NULL) <= 0) {
+		*introfn = '\0';
+	}
 	
 	if (ast_strlen_zero(vmu->email)) {
 		/* We need the vmu->email to be set when we call make_email_file, but
@@ -1771,7 +1775,9 @@
 		imap_delete_old_greeting(fn, vms);
 	}
 	
-	make_email_file(p, myserveremail, vmu, msgnum, vmu->context, vmu->mailbox, S_OR(chan->cid.cid_num, NULL), S_OR(chan->cid.cid_name, NULL), fn, vms->introfn, fmt, duration, 1, chan, NULL, 1, flag);
+	ast_log(LOG_NOTICE, "I'm to be storing the following files: %s and %s to mailbox %s\n", fn, introfn, vmu->mailbox);
+
+	make_email_file(p, myserveremail, vmu, msgnum, vmu->context, vmu->mailbox, S_OR(chan->cid.cid_num, NULL), S_OR(chan->cid.cid_name, NULL), fn, introfn, fmt, duration, 1, chan, NULL, 1, flag);
 	/* read mail file to memory */		
 	len = ftell(p);
 	rewind(p);
@@ -2081,6 +2087,8 @@
 		ast_log(AST_LOG_ERROR, "Could not initialize mailstream\n");
 		return -1;
 	}
+	
+	create_dirpath(vms->curdir, sizeof(vms->curdir), vmu->context, vms->username, vms->curbox);
 	
 	/* Check Quota */
 	if  (box == 0)  {
@@ -3394,6 +3402,7 @@
 }
 #endif
 
+#endif /* #ifndef IMAP_STORAGE */
 
 /*!
  * \brief Utility function to copy a file.
@@ -3506,7 +3515,6 @@
 	ast_variables_destroy(var);
 }
 
-#endif /* #ifndef IMAP_STORAGE */
 #endif /* #else of #ifdef ODBC_STORAGE */
 #if (!defined(ODBC_STORAGE) && !defined(IMAP_STORAGE))
 /*! 
@@ -5755,9 +5763,14 @@
 
 #ifdef IMAP_STORAGE
 			/* Record new intro file */
+			ast_log(LOG_NOTICE, "msgfile is %s and textfile is %s\n", msgfile, textfile);
+			make_file(vms->introfn, sizeof(vms->introfn), curdir, curmsg);
+			strncat(vms->introfn, "intro", sizeof(vms->introfn));
 			res = ast_play_and_wait(chan, INTRO);
 			res = ast_play_and_wait(chan, "beep");
 			res = play_record_review(chan, NULL, vms->introfn, vmu->maxsecs, vmfmts, 1, vmu, (int *)duration, NULL, record_gain, vms, flag);
+			ast_log(LOG_NOTICE, "I believe I just recorded an intro...%s\n", vms->introfn);
+			ast_log(LOG_NOTICE, "btw, the address of vms is %p\n", vms);
 			cmd = 't';
 #else
 
@@ -5811,6 +5824,7 @@
 		case '2': 
 			/* NULL out introfile so we know there is no intro! */
 			*vms->introfn = '\0';
+			ast_log(LOG_NOTICE, "I just nulled out the vms->introfn for some reason...\n");
 			cmd = 't';
 			break;
 		case '*':
@@ -6146,9 +6160,7 @@
 
  		RETRIEVE(dir, curmsg, sender->mailbox, sender->context);
 
-		make_file(origmsgfile, sizeof(origmsgfile), dir, curmsg);
-		create_dirpath(vmstmp.curdir, sizeof(vmstmp.curdir), sender->context, vmstmp.username, "tmp");
-		make_file(msgfile, sizeof(msgfile), vmstmp.curdir, curmsg);
+		copy_plain_file(origmsgfile, msgfile);
 
 		cmd = vm_forwardoptions(chan, sender, vmstmp.curdir, curmsg, vmfmts, S_OR(context, "default"), record_gain, &duration, &vmstmp, urgent_str);
 		if (!cmd) {
@@ -6177,7 +6189,8 @@
 					myserveremail = vmtmp->serveremail;
 				attach_user_voicemail = ast_test_flag(vmtmp, VM_ATTACH);
 				/* NULL category for IMAP storage */
-				sendmail(myserveremail, vmtmp, todircount, vmtmp->context, vmtmp->mailbox, S_OR(chan->cid.cid_num, NULL), S_OR(chan->cid.cid_name, NULL), vms->fn, vms->introfn, fmt, duration, attach_user_voicemail, chan, NULL, urgent_str);
+				ast_log(LOG_NOTICE, "Sanity check, the files are %s(%s) and %s(%s)\n", vmstmp.fn, ast_fileexists(vmstmp.fn, NULL, NULL) > 0 ? "Exists!" : "Nonexistent!", vmstmp.introfn, ast_fileexists(vmstmp.introfn, NULL, NULL) > 0 ? "Exists!" : "Nonexistent!");
+				sendmail(myserveremail, vmtmp, todircount, vmtmp->context, vmtmp->mailbox, S_OR(chan->cid.cid_num, NULL), S_OR(chan->cid.cid_name, NULL), vmstmp.fn, vmstmp.introfn, fmt, duration, attach_user_voicemail, chan, NULL, urgent_str);
 #else
 				copy_message(chan, sender, 0, curmsg, duration, vmtmp, fmt, dir, urgent_str);
 #endif
@@ -6548,10 +6561,12 @@
 		 * as a separate file from the rest of the message
 		 */
 		if (!ast_strlen_zero(vms->introfn)) {
+			ast_log(LOG_NOTICE, "Gonna play intro %s\n", vms->introfn);
 			wait_file(chan, vms, vms->introfn);
 		}
 #endif
 		if ((res = wait_file(chan, vms, vms->fn)) < 0) {
+			ast_log(LOG_NOTICE, "Glonna play %s\n", vms->fn);
 			ast_log(AST_LOG_WARNING, "Playback of message %s failed\n", vms->fn);
 			res = 0;
 		}
@@ -6574,6 +6589,7 @@
 		ast_copy_string(fn, dir, sizeof(fn));
 	
 	if ((msgnum < 0 && imapgreetings) || msgnum > -1) {
+		ast_log(LOG_NOTICE, "Disposing of file %s and %s.txt\n", fn, fn);
 		ast_filedelete(fn, NULL);	
 		snprintf(full_fn, sizeof(full_fn), "%s.txt", fn);
 		unlink(full_fn);




More information about the svn-commits mailing list