From: Russell Bryant Date: Wed, 11 Feb 2009 23:56:37 +0000 (+0000) Subject: Fixify infinite DTMF in the case that no RFC2833 END event is ever received X-Git-Tag: 1.4.24-rc1~70 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9dff8995b43f7288b14bc176c8432ddf5efe205c;p=thirdparty%2Fasterisk.git Fixify infinite DTMF in the case that no RFC2833 END event is ever received git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@174985 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/rtp.c b/main/rtp.c index 5165ade83c..c917e70b47 100644 --- a/main/rtp.c +++ b/main/rtp.c @@ -1299,6 +1299,18 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) /* Record received timestamp as last received now */ rtp->lastrxts = timestamp; + if (rtp->dtmfcount) { + rtp->dtmfcount -= (timestamp - rtp->lastrxts); + + if (rtp->dtmfcount < 0) { + rtp->dtmfcount = 0; + } + + if (rtp->resp && !rtp->dtmfcount) { + return send_dtmf(rtp, AST_FRAME_DTMF_END); + } + } + rtp->f.mallocd = 0; rtp->f.datalen = res - hdrlen; rtp->f.data = rtp->rawdata + hdrlen + AST_FRIENDLY_OFFSET;