aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.version2
-rw-r--r--ChangeLog19
-rw-r--r--main/rtp.c7
3 files changed, 25 insertions, 3 deletions
diff --git a/.version b/.version
index 04e4a4180..490ecbc28 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-1.6.2.10-rc1
+1.6.2.10-rc2
diff --git a/ChangeLog b/ChangeLog
index 25cb5eae7..3d56065c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.