[asterisk-bugs] [Asterisk 0017571]: RFC 2833 frame out of order detection does not properly handle numeric overflow
Asterisk Bug Tracker
noreply at bugs.digium.com
Thu Jul 1 08:45:23 CDT 2010
A NOTE has been added to this issue.
======================================================================
https://issues.asterisk.org/view.php?id=17571
======================================================================
Reported By: mdeneen
Assigned To:
======================================================================
Project: Asterisk
Issue ID: 17571
Category: Core/RTP
Reproducibility: sometimes
Severity: minor
Priority: normal
Status: new
Asterisk Version: 1.6.2.9
JIRA:
Regression: No
Reviewboard Link:
SVN Branch (only for SVN checkouts, not tarball releases): N/A
SVN Revision (number only!):
Request Review:
======================================================================
Date Submitted: 2010-06-30 10:24 CDT
Last Modified: 2010-07-01 08:45 CDT
======================================================================
Summary: RFC 2833 frame out of order detection does not
properly handle numeric overflow
Description:
SVN revision r254482 added code to detect out of sequence RTP frames, and
to discard them. However, at least with my ITSP, the RTP sequence is a 16
bit unsigned number. It is possible to get into a situation where the
check fails because the RTP sequence number rolls back around to 0 as the
DTMF frame comes in.
In this situation, the last sequence number (rtp->lastevent) is not
updated and further DTMF frames are ignored.
For example, rtp->lastevent might be 65535. The RTP sequence can never be
greater than this, so no further DTMF will be processed.
Instead of doing:
if (rtp->lastevent > seqno) {
return;
}
Perhaps it should not fall into the "out of order" branch if the
difference between the last sequence and the current sequence is greater
than a chosen reasonable number.
======================================================================
Relationships ID Summary
----------------------------------------------------------------------
related to 0015811 [patch] dtmf creating double digits if ...
======================================================================
----------------------------------------------------------------------
(0124148) mdeneen (reporter) - 2010-07-01 08:45
https://issues.asterisk.org/view.php?id=17571#c124148
----------------------------------------------------------------------
I modified main/rtp.c to add some logging such that it would write out the
rtp sequence whenever we receive DTMF.
Interestingly enough, a new call for me does not start at sequence 0. It
appears to be somewhat random. In this scenario, one could hit the
rollover almost immediately without having to wait for the sequence to flow
from 0->65535.
If you set up a simple dial plan so that it never hangs up, and sit there
pressing a button on the phone, eventually it will stop receiving DTMF for
the rest of the call.
Issue History
Date Modified Username Field Change
======================================================================
2010-07-01 08:45 mdeneen Note Added: 0124148
======================================================================
More information about the asterisk-bugs
mailing list