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
10
Matthew Jordan 13 years ago
parent 7ae8943aac
commit a2e582c835

@ -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;

Loading…
Cancel
Save