diff -Naur asterisk-dev-original/apps/app_voicemail.c asterisk/apps/app_voicemail.c --- asterisk-dev-original/apps/app_voicemail.c 2005-05-08 18:44:25.000000000 +0200 +++ asterisk/apps/app_voicemail.c 2005-05-16 13:58:48.570390267 +0200 @@ -1971,7 +1971,6 @@ FILE *txt; int res = 0; int msgnum; - int fd; int duration = 0; int ausemacro = 0; int ousemacro = 0; @@ -2175,24 +2174,22 @@ chan->name, ast_callerid_merge(callerid, sizeof(callerid), chan->cid.cid_name, chan->cid.cid_num, "Unknown"), date, (long)time(NULL), - category ? category : ""); - fclose(txt); + category ? category : ""); } else ast_log(LOG_WARNING, "Error opening text file for output\n"); res = play_record_review(chan, NULL, fn, vmmaxmessage, fmt, 1, vmu, &duration, dir); - if (res == '0') + if (res == '0') { + if (txt) + fclose(txt); goto transfer; + } if (res > 0) res = 0; - fd = open(txtfile, O_APPEND | O_WRONLY); - if (fd > -1) { - txt = fdopen(fd, "a"); - if (txt) { - fprintf(txt, "duration=%d\n", duration); - fclose(txt); - } else - close(fd); + if (txt) { + fprintf(txt, "duration=%d\n", duration); + fclose(txt); } + 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);