From 8820ae5b2eee08efea8a18de9db099c63af1ba54 Mon Sep 17 00:00:00 2001
From: Tilghman Lesher <tilghman@meg.abyt.es>
Date: Thu, 15 Nov 2007 00:01:22 +0000
Subject: [PATCH] Merged revisions 89275 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r89275 | tilghman | 2007-11-14 17:23:58 -0600 (Wed, 14 Nov 2007) | 5 lines

When a recording ends with '#', we are improperly trimming an extra 200ms from the recording.
Reported by: sim
Patch by: tilghman
Closes issue #11247

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89276 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 main/app.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/main/app.c b/main/app.c
index f21a40e47c..defad777a9 100644
--- a/main/app.c
+++ b/main/app.c
@@ -767,8 +767,13 @@ static int __ast_play_and_record(struct ast_channel *chan, const char *playfile,
 		for (x = 0; x < fmtcnt; x++) {
 			if (!others[x])
 				break;
-			if (res > 0)
-				ast_stream_rewind(others[x], totalsilence ? totalsilence - 200 : 200);
+			/*!\note
+			 * If we ended with silence, trim all but the first 200ms of silence
+			 * off the recording.  However, if we ended with '#', we don't want
+			 * to trim ANY part of the recording.
+			 */
+			if (res > 0 && totalsilence)
+				ast_stream_rewind(others[x], totalsilence - 200);
 			ast_truncstream(others[x]);
 			ast_closestream(others[x]);
 		}
@@ -783,7 +788,9 @@ static int __ast_play_and_record(struct ast_channel *chan, const char *playfile,
 			realfiles[x] = ast_readfile(recordfile, sfmt[x], comment, O_RDONLY, 0, 0);
 			if (!others[x] || !realfiles[x])
 				break;
-			ast_stream_rewind(others[x], totalsilence ? totalsilence - 200 : 200);
+			/*!\note Same logic as above. */
+			if (totalsilence)
+				ast_stream_rewind(others[x], totalsilence - 200);
 			ast_truncstream(others[x]);
 			/* add the original file too */
 			while ((fr = ast_readframe(realfiles[x]))) {
-- 
GitLab