diff options
-rw-r--r-- | .version | 2 | ||||
-rw-r--r-- | ChangeLog | 19 | ||||
-rw-r--r-- | main/rtp.c | 7 |
3 files changed, 25 insertions, 3 deletions
@@ -1 +1 @@ -1.6.2.10-rc1 +1.6.2.10-rc2 @@ -1,3 +1,22 @@ +2010-07-07 Leif Madsen <lmadsen@digium.com> + + * Release Asterisk 1.6.2.10-rc2 + + * Fix problem with RFC 2833 DTMF not being accepted. + + A recent check was added to ensure that we did not erroneously + detect duplicate DTMF when we received packets out of order. + The problem was that the check did not account for the fact that + the seqno of an RTP stream will roll over back to 0 after hitting + 65535. Now, we have a secondary check that will ensure that the + seqno rolling over will not cause us to stop accepting DTMF. + + (closes issue 0017571) + Reported by: mdeneen + Patches: + rtp_seqno_rollover.patch uploaded by mmichelson (license 60) + Tested by: richardf, maxochoa, JJCinAZ + 2010-06-29 Leif Madsen <lmadsen@digium.com> * Release Asterisk 1.6.2.10-rc1 diff --git a/main/rtp.c b/main/rtp.c index 016d3b57e..2c1b44e4c 100644 --- a/main/rtp.c +++ b/main/rtp.c @@ -1072,8 +1072,11 @@ static void process_rfc2833(struct ast_rtp *rtp, unsigned char *data, int len, u if (last_duration > 64000 && samples < last_duration) new_duration += 0xFFFF + 1; new_duration = (new_duration & ~0xFFFF) | samples; - - if (rtp->lastevent > seqno) { + /* The second portion of this check is to not mistakenly + * stop accepting DTMF if the seqno rolls over beyond + * 65535. + */ + if (rtp->lastevent > seqno && rtp->lastevent - seqno < 50) { /* Out of order frame. Processing this can cause us to * improperly duplicate incoming DTMF, so just drop * this. |