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
........

Merged revisions 373505 from http://svn.asterisk.org/svn/asterisk/branches/10


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@373508 65c4cc65-6c06-0410-ace0-fbb531ad65f3
certified/11.2
Matthew Jordan 14 years ago
parent fcd5d7f458
commit 918a18ceb7

@ -2859,9 +2859,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;

Loading…
Cancel
Save