From 5c178fb42b3b8e7b814c2be0971daec37b29f6a2 Mon Sep 17 00:00:00 2001
From: Russell Bryant <russell@russellbryant.com>
Date: Mon, 23 Feb 2009 23:11:37 +0000
Subject: [PATCH] Merged revisions 178141 via svnmerge from
 https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r178141 | russell | 2009-02-23 17:09:01 -0600 (Mon, 23 Feb 2009) | 14 lines

Fix infinite DTMF when a BEGIN is received without an END.

This commit is related to rev 175124 of 1.4 where a previous attempt was made
to fix this problem.  The problem with the previous patch was that the inserted
code needed to go _before_ setting the lastrxts to the current timestamp.
Because those were the same, the dtmfcount variable was never decremented, and
so the END was never sent.

In passing, I removed the dtmfsamples variable which was completed unused.  I
also removed a redundant setting of the lastrxts variable.

(closes issue #14460)
Reported by: moliveras

........


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

diff --git a/main/rtp.c b/main/rtp.c
index e87d00b226..782642969d 100644
--- a/main/rtp.c
+++ b/main/rtp.c
@@ -1735,14 +1735,8 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp)
 	rtp->lastrxformat = rtp->f.subclass = rtpPT.code;
 	rtp->f.frametype = (rtp->f.subclass & AST_FORMAT_AUDIO_MASK) ? AST_FRAME_VOICE : (rtp->f.subclass & AST_FORMAT_VIDEO_MASK) ? AST_FRAME_VIDEO : AST_FRAME_TEXT;
 
-	if (!rtp->lastrxts)
-		rtp->lastrxts = timestamp;
-
 	rtp->rxseqno = seqno;
 
-	/* Record received timestamp as last received now */
-	rtp->lastrxts = timestamp;
-
 	if (rtp->dtmfcount) {
 		rtp->dtmfcount -= (timestamp - rtp->lastrxts);
 
@@ -1758,6 +1752,9 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp)
 		}
 	}
 
+	/* Record received timestamp as last received now */
+	rtp->lastrxts = timestamp;
+
 	rtp->f.mallocd = 0;
 	rtp->f.datalen = res - hdrlen;
 	rtp->f.data.ptr = rtp->rawdata + hdrlen + AST_FRIENDLY_OFFSET;
-- 
GitLab