[asterisk-commits] mmichelson: branch 1.4 r67424 - /branches/1.4/apps/app_voicemail.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Tue Jun 5 11:32:51 MST 2007


Author: mmichelson
Date: Tue Jun  5 13:32:50 2007
New Revision: 67424

URL: http://svn.digium.com/view/asterisk?view=rev&rev=67424
Log:
Fix for bug number 9786, wherein voicemails saved to IMAP storage using extensions other than gsm were
unable to be played over the phone. (Issue 9786, reporter: xmarksthespot, Patched by xmarksthe spot with revisions by me,
reviewed by Russell Bryant).


Modified:
    branches/1.4/apps/app_voicemail.c

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=67424&r1=67423&r2=67424
==============================================================================
--- branches/1.4/apps/app_voicemail.c (original)
+++ branches/1.4/apps/app_voicemail.c Tue Jun  5 13:32:50 2007
@@ -4395,6 +4395,7 @@
 	char category[32];
 	char todir[PATH_MAX];
 	int res = 0;
+	char *attachedfilefmt;
 	char *temp;
 
 	vms->starting = 0; 
@@ -4416,7 +4417,23 @@
 	make_gsm_file(vms->fn, vms->imapuser, todir, vms->curmsg);
 
 	mail_fetchstructure (vms->mailstream,vms->msgArray[vms->curmsg],&body);
-	save_body(body,vms,"3","gsm");
+	
+	/* We have the body, now we extract the file name of the first attachment. */
+	if (body->nested.part->next && body->nested.part->next->body.parameter->value) {
+		attachedfilefmt = ast_strdupa(body->nested.part->next->body.parameter->value);
+	} else {
+		ast_log(LOG_ERROR, "There is no file attached to this IMAP message.\n");
+		return -1;
+	}
+	
+	/* Find the format of the attached file */
+
+	strsep(&attachedfilefmt, ".");
+	if (!attachedfilefmt) {
+		ast_log(LOG_ERROR, "File format could not be obtained from IMAP message attachment\n");
+		return -1;
+	}
+	save_body(body, vms, "2", attachedfilefmt);
 
 	adsi_message(chan, vms);
 	if (!vms->curmsg)



More information about the asterisk-commits mailing list