Summary: | ASTERISK-11641: [patch] RFC2833 DTMF relaying error when using p2p bridging | ||
Reporter: | Andriy I Pylypenko (bamby) | Labels: | |
Date Opened: | 2008-03-14 09:30:31 | Date Closed: | 2008-04-01 13:04:29 |
Priority: | Major | Regression? | No |
Status: | Closed/Complete | Components: | Core/RTP |
Versions: | Frequency of Occurrence | ||
Related Issues: | |||
Environment: | Attachments: | ( 0) rtp_dtmf.diff | |
Description: | I'm using Asterisk in SIP relaying mode with RTP relaying too as DTMFs coming through have to be monitored during the call. The DTMFs are in RFC2833 mode only. After having upgraded asterisk 1.2 to asterisk 1.4.18 I noticed that remote IVRs stopped to recognize DTMFs coming from the calling SIP UA. I've analyzed the RTP stream and discovered that DTMFs are coming with timestamps and sequence numbers completely different from audio timestamps. And RFC2833, section 3.1 says: DTMF digits and named telephone events are carried as part of the audio stream, and MUST use the same sequence number and time-stamp base as the regular audio channel to simplify the generation of audio waveforms at a gateway. I've looked through the asterisk's code and found out that this behavior is caused by introduction of packet-to-packet bridging mode. In my case the DTMFs are extracted from RTP and then reinjected into RTP stream but audio packets are sent using p2p code, so not changing neither timestamp nor sequence number of audio packets. I've made a quick fix that ensures the RTP stream is fully reconstructed if the DTMFs should be monitored by Asterisk during the bridging. After this remote IVRs started to recognize DTMFs again. | ||
Comments: | By: Digium Subversion (svnbot) 2008-04-01 12:57:59 Repository: asterisk Revision: 112209 U branches/1.4/main/rtp.c ------------------------------------------------------------------------ r112209 | file | 2008-04-01 12:57:58 -0500 (Tue, 01 Apr 2008) | 4 lines Disable Packet2Packet bridging when we need to feed DTMF frames into the core. Some implementations do not like how we switch between things. (closes issue ASTERISK-11641) Reported by: bamby ------------------------------------------------------------------------ http://svn.digium.com/view/asterisk?view=rev&revision=112209 By: Digium Subversion (svnbot) 2008-04-01 13:01:39 Repository: asterisk Revision: 112210 _U trunk/ U trunk/main/rtp.c ------------------------------------------------------------------------ r112210 | file | 2008-04-01 13:01:39 -0500 (Tue, 01 Apr 2008) | 12 lines Merged revisions 112209 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r112209 | file | 2008-04-01 15:02:43 -0300 (Tue, 01 Apr 2008) | 4 lines Disable Packet2Packet bridging when we need to feed DTMF frames into the core. Some implementations do not like how we switch between things. (closes issue ASTERISK-11641) Reported by: bamby ........ ------------------------------------------------------------------------ http://svn.digium.com/view/asterisk?view=rev&revision=112210 By: Digium Subversion (svnbot) 2008-04-01 13:04:29 Repository: asterisk Revision: 112211 _U branches/1.6.0/ U branches/1.6.0/main/rtp.c ------------------------------------------------------------------------ r112211 | file | 2008-04-01 13:04:29 -0500 (Tue, 01 Apr 2008) | 20 lines Merged revisions 112210 via svnmerge from https://origsvn.digium.com/svn/asterisk/trunk ................ r112210 | file | 2008-04-01 15:06:13 -0300 (Tue, 01 Apr 2008) | 12 lines Merged revisions 112209 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r112209 | file | 2008-04-01 15:02:43 -0300 (Tue, 01 Apr 2008) | 4 lines Disable Packet2Packet bridging when we need to feed DTMF frames into the core. Some implementations do not like how we switch between things. (closes issue ASTERISK-11641) Reported by: bamby ........ ................ ------------------------------------------------------------------------ http://svn.digium.com/view/asterisk?view=rev&revision=112211 |