Merged revisions 34875 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Mon, 19 Jun 2006 18:11:04 +0000 (18:11 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Mon, 19 Jun 2006 18:11:04 +0000 (18:11 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r34875 | tilghman | 2006-06-19 13:07:26 -0500 (Mon, 19 Jun 2006) | 2 lines

Issue 7357 - txt file left behind when going to operator.  Also, fix a possible file descriptor leak.

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@34876 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index 1a3fe48..f5c362d 100644 (file)
@@ -2628,6 +2628,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_
                        if (duration < vmminmessage) {
                                if (option_verbose > 2) 
                                        ast_verbose( VERBOSE_PREFIX_3 "Recording was %d seconds long but needs to be at least %d - abandoning\n", duration, vmminmessage);
+                               fclose(txt);
                                ast_filedelete(tmptxtfile, NULL);
                                unlink(tmptxtfile);
                        } else {
@@ -2638,6 +2639,10 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_
                                        /* Delete files */
                                        ast_filedelete(tmptxtfile, NULL);
                                        unlink(tmptxtfile);
+                               } else if (ast_fileexists(tmptxtfile, NULL, NULL) <= 0) {
+                                       if (option_debug) 
+                                               ast_log(LOG_DEBUG, "The recorded media file is gone, so we should remove the .txt file too!\n");
+                                       unlink(tmptxtfile);     
                                } else {
                                        for (;;) {
                                                make_file(fn, sizeof(fn), dir, msgnum);
@@ -2671,7 +2676,7 @@ static int leave_voicemail(struct ast_channel *chan, char *ext, struct leave_vm_
                                                        free_user(recip);
                                                }
                                        }
-                                       if (ast_fileexists(fn, NULL, NULL)) {
+                                       if (ast_fileexists(fn, NULL, NULL) > 0) {
                                                STORE(dir, vmu->mailbox, vmu->context, msgnum);
                                                notify_new_message(chan, vmu, msgnum, duration, fmt, chan->cid.cid_num, chan->cid.cid_name);
                                                DISPOSE(dir, msgnum);