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

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Feb 24 16:59:01 CST 2010


Author: jpeeler
Date: Wed Feb 24 16:58:54 2010
New Revision: 248668

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=248668
Log:
Make deletion of temporary greetings work properly with IMAP_STORAGE

This same patch was merged in 220833, but was skipped in this branch
erroneously.

(closes issue #16170)
Reported by: francesco_r

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=248668&r1=248667&r2=248668
==============================================================================
--- branches/1.4/apps/app_voicemail.c (original)
+++ branches/1.4/apps/app_voicemail.c Wed Feb 24 16:58:54 2010
@@ -133,7 +133,7 @@
 static void write_file (char *filename, char *buffer, unsigned long len);
 /*static void status (MAILSTREAM *stream); */ /* No need for this. */
 static char *get_header_by_tag(char *header, char *tag);
-static void vm_imap_delete(int msgnum, struct ast_vm_user *vmu);
+static void vm_imap_delete(char *file, int msgnum, struct ast_vm_user *vmu);
 static char *get_user_by_mailbox(char *mailbox);
 static struct vm_state *get_vm_state_by_imapuser(char *user, int interactive);
 static struct vm_state *get_vm_state_by_mailbox(const char *mailbox, const char *context, int interactive);
@@ -477,7 +477,7 @@
 #define EXISTS(a,b,c,d) (ast_fileexists(c,NULL,d) > 0)
 #define RENAME(a,b,c,d,e,f,g,h) (rename_file(g,h));
 #define COPY(a,b,c,d,e,f,g,h) (copy_file(g,h));
-#define DELETE(a,b,c,d) (vm_imap_delete(b,d))
+#define DELETE(a,b,c,d) (vm_imap_delete(a,b,d))
 #else
 #define RETRIEVE(a,b,c)
 #define DISPOSE(a,b)
@@ -1062,14 +1062,15 @@
 /* All IMAP-specific functions should go in this block. This
  * keeps them from being spread out all over the code */
 #ifdef IMAP_STORAGE
-static void vm_imap_delete(int msgnum, struct ast_vm_user *vmu)
+static void vm_imap_delete(char *file, int msgnum, struct ast_vm_user *vmu)
 {
 	char arg[10];
 	struct vm_state *vms;
 	unsigned long messageNum;
 
-	/* Greetings aren't stored in IMAP, so we can't delete them there */
+	/* Greetings aren't stored in IMAP, so we delete them from disk */
 	if (msgnum < 0) {
+		ast_filedelete(file, NULL);
 		return;
 	}
 
@@ -1091,6 +1092,7 @@
 	snprintf (arg, sizeof(arg), "%lu",messageNum);
 	ast_mutex_lock(&vms->lock);
 	mail_setflag (vms->mailstream,arg,"\\DELETED");
+	mail_expunge(vms->mailstream);
 	ast_mutex_unlock(&vms->lock);
 }
 




More information about the asterisk-commits mailing list