diff --git a/app.c b/app.c index f653aa909b..61cb63cd4c 100755 --- a/app.c +++ b/app.c @@ -706,10 +706,12 @@ int ast_play_and_record(struct ast_channel *chan, char *playfile, char *recordfi for (x=0;x 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]); } @@ -718,14 +720,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 f4dad6a7c4..ebd379150f 100755 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -4657,7 +4657,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 == '*') { @@ -4752,7 +4752,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;