diff --git a/apps/app_record.c b/apps/app_record.c index 4008fc0123..43a1e490f3 100644 --- a/apps/app_record.c +++ b/apps/app_record.c @@ -447,8 +447,13 @@ static int record_exec(struct ast_channel *chan, const char *data) if (gotsilence) { ast_stream_rewind(s, silence - 1000); ast_truncstream(s); - } else if (!gottimeout) { - /* Strip off the last 1/4 second of it */ + } else if (!gottimeout && f) { + /* + * Strip off the last 1/4 second of it, if we didn't end because of a timeout, + * or a hangup. This must mean we ended because of a DTMF tone and while this + * 1/4 second stripping is very old code the most likely explanation is that it + * relates to stripping a partial DTMF tone. + */ ast_stream_rewind(s, 250); ast_truncstream(s); }