[asterisk-bugs] [Asterisk 0014460]: Asterisk plays a continuous tone forever if it never receives a 2833 end packet
Asterisk Bug Tracker
noreply at bugs.digium.com
Thu Feb 12 11:03:22 CST 2009
A NOTE has been added to this issue.
======================================================================
http://bugs.digium.com/view.php?id=14460
======================================================================
Reported By: moliveras
Assigned To: russell
======================================================================
Project: Asterisk
Issue ID: 14460
Category: Channels/chan_sip/General
Reproducibility: always
Severity: minor
Priority: normal
Status: closed
Asterisk Version: 1.4.21.1
Regression: No
SVN Branch (only for SVN checkouts, not tarball releases): N/A
SVN Revision (number only!):
Request Review:
Resolution: fixed
Fixed in Version:
======================================================================
Date Submitted: 2009-02-11 14:46 CST
Last Modified: 2009-02-12 11:03 CST
======================================================================
Summary: Asterisk plays a continuous tone forever if it never
receives a 2833 end packet
Description:
I am running asterisk 1.4.21.1, but have also reproduced this issue with
1.6.1-rc1.
Asterisk is bridging a call between two endpoints, both using rfc2833 for
digit detection.
SBC (192.168.196.40) --> asterisk (192.168.196.33) --> IP Phone
(192.168.196.181).
Asterisk receives a single rfc2833 digit with a duration of 320 (no end
packet) from 196.40. Asterisk then sends a continuous stream of 2833
events towards the other end with increasing duration, causing a continuous
tone to be played. Asterisk also stops sending rtp towards 196.181 while
sending the 2833 events.
I believe that this is not compliant with rfc2833.
Would it be better if the 2833 packets were simply forwarded on if
bridging between two peers that both do 2833? At least the tone should not
last forever, and should not block rtp. This 2833 packet originated from
an Adtran TA904 gateway that falsely detected a digit when none was pressed
(talk off).
I will attach a packet capture after submitting this ticket.
======================================================================
----------------------------------------------------------------------
(0100005) svnbot (reporter) - 2009-02-12 11:03
http://bugs.digium.com/view.php?id=14460#c100005
----------------------------------------------------------------------
Repository: asterisk
Revision: 175126
_U branches/1.6.0/
U branches/1.6.0/main/rtp.c
------------------------------------------------------------------------
r175126 | russell | 2009-02-12 11:03:21 -0600 (Thu, 12 Feb 2009) | 43
lines
Merged revisions 175125 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r175125 | russell | 2009-02-12 10:57:25 -0600 (Thu, 12 Feb 2009) | 35
lines
Merged revisions 175124 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r175124 | russell | 2009-02-12 10:51:13 -0600 (Thu, 12 Feb 2009) | 27
lines
Don't send DTMF for infinite time if we do not receive an END event.
I thought that this was going to end up being a pretty gnarly fix, but it
turns
out that there was actually already a configuration option in rtp.conf,
dtmftimeout, that was intended to handle this situation. However, in
between
Asterisk 1.2 and Asterisk 1.4, the code that processed the option got
lost.
So, this commit brings it back to life.
The default timeout is 3 seconds. However, it is worth noting that having
this be configurable at all is not really the recommended behavior in RFC
2833.
More information about the asterisk-bugs
mailing list