From a2e582c83554a6fa857de1a43df462ba679bca8d Mon Sep 17 00:00:00 2001 From: Matthew Jordan <mjordan@digium.com> Date: Mon, 24 Sep 2012 22:17:02 +0000 Subject: [PATCH] Revert change to res_rtp_asterisk committed in r373236 (1.8) The change committed in r373236 attempted to account for endpoints that increased their RTP timestamp in DTMF end of event re-transmissions. This change attempted to make Asterisk continue to work with endpoints that failed to follow the RFC while maintaining the fix that allowed for out of order DTMF to be handled. Unfortunately, there is no free lunch, and this patch broke any system that sent DTMF immediately after an RTP session was established or when an SSRC is updated. As such, that patch is being reverted for the previous behavior. Endpoints that erroneously increase the RTP timestamp in DTMF end of event packets will not work properly with Asterisk. (issue ASTERISK-20424) ........ Merged revisions 373504 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@373505 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- res/res_rtp_asterisk.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c index 53216a21bb..5bafae292a 100644 --- a/res/res_rtp_asterisk.c +++ b/res/res_rtp_asterisk.c @@ -1589,9 +1589,7 @@ static void process_dtmf_rfc2833(struct ast_rtp_instance *instance, unsigned cha new_duration = (new_duration & ~0xFFFF) | samples; if (event_end & 0x80) { - /* End event. Absorb re-transmits, and account for some endpoints - * that erroneously increment the timestamp during re-transmissions */ - if ((seqno != rtp->last_seqno) && (timestamp > rtp->last_end_timestamp + 320)) { + if ((seqno != rtp->last_seqno) && (timestamp > rtp->last_end_timestamp)) { rtp->last_end_timestamp = timestamp; rtp->dtmf_duration = new_duration; rtp->resp = resp;