]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Revert change to res_rtp_asterisk committed in r373236 (1.8)
authorMatthew Jordan <mjordan@digium.com>
Mon, 24 Sep 2012 22:15:25 +0000 (22:15 +0000)
committerMatthew Jordan <mjordan@digium.com>
Mon, 24 Sep 2012 22:15:25 +0000 (22:15 +0000)
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)

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

res/res_rtp_asterisk.c

index 3d380f59951bbf16e5dafaa25152bc332d10546b..1cd322248ac2cf5dca0e0a0c4b5e7c5da4be5986 100644 (file)
@@ -1587,9 +1587,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;