diff --git a/app.c b/app.c index 0b277b5ceb41e697017d4f41a9721cd7d86406ea..5e57a86fbd01589dbc4d056d5c2faf0ad36e0af6 100755 --- a/app.c +++ b/app.c @@ -710,10 +710,12 @@ int ast_play_and_record(struct ast_channel *chan, char *playfile, char *recordfi for (x=0;x<fmtcnt;x++) { if (!others[x]) break; - if (totalsilence) - ast_stream_rewind(others[x], totalsilence-200); - else - ast_stream_rewind(others[x], 200); + if (res > 0) { + if (totalsilence) + ast_stream_rewind(others[x], totalsilence-200); + else + ast_stream_rewind(others[x], 200); + } ast_truncstream(others[x]); ast_closestream(others[x]); } @@ -722,14 +724,11 @@ int ast_play_and_record(struct ast_channel *chan, char *playfile, char *recordfi ast_log(LOG_WARNING, "Unable to restore format %s to channel '%s'\n", ast_getformatname(rfmt), chan->name); } } - if (outmsg) { - if (outmsg > 1) { + if (outmsg > 1) { /* Let them know recording is stopped */ - ast_streamfile(chan, "auth-thankyou", chan->language); + if(!ast_streamfile(chan, "auth-thankyou", chan->language)) ast_waitstream(chan, ""); - } } - return res; } diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 31c02dbb293eaf601ec41b5948cb7a7673f4d6c2..424306c42e2e69aa52ed222c82b9db099151d647 100755 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -4609,7 +4609,7 @@ static int play_record_review(struct ast_channel *chan, char *playfile, char *re cmd = ast_play_and_record(chan, playfile, recordfile, maxtime, fmt, duration, silencethreshold, maxsilence); if (cmd == -1) /* User has hung up, no options to give */ - return res; + return cmd; if (cmd == '0') { break; } else if (cmd == '*') { @@ -4704,7 +4704,7 @@ static int play_record_review(struct ast_channel *chan, char *playfile, char *re } } if (outsidecaller) - ast_play_and_wait(chan, "vm-goodbye"); + ast_play_and_wait(chan, "vm-goodbye"); if (cmd == 't') cmd = 0; return cmd;