]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_record: Fix bug where using the 'k' option and hanging up would trim 1/4 of a...
authorJoshua Colp <jcolp@digium.com>
Mon, 1 Dec 2014 13:40:30 +0000 (13:40 +0000)
committerJoshua Colp <jcolp@digium.com>
Mon, 1 Dec 2014 13:40:30 +0000 (13:40 +0000)
The Record dialplan function trims 1/4 of a second from the end of recordings in case
they are terminated because of DTMF. When hanging up, however, you don't want this to happen.
This change makes it so on hangup this does not occur.

ASTERISK-24530 #close
Reported by: Ben Smithurst
patches:
 app_record_v2.diff submitted by Ben Smithurst (license 6529)

Review: https://reviewboard.asterisk.org/r/4201/
........

Merged revisions 428653 from http://svn.asterisk.org/svn/asterisk/branches/11

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

apps/app_record.c

index 051f97bb85093c1cd668c8cba14491ca24f630c7..233598cb633e60cfc43441221facf062ed545dc3 100644 (file)
@@ -411,8 +411,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);
        }