Summary:ASTERISK-12993: Music On Hold stops sending outbound RTP after first inbound RTP packet is lost
Reporter:Simon Rowland (funky)Labels:
Date Opened:2008-10-30 15:12:39Date Closed:2011-06-07 14:03:02
Versions:Frequency of
Description:When the music on hold application is playing music, the outbound RTP (containing the music) stops after the first incoming packet is lost. Even if a single packet is lost out of a 30-minute call, the music will stop as soon as the first packet is lost.

Obviously this is a problem for anyone with a PBX that has music on hold with long wait times and uses VoIP. Even using a high-quality Internet connection at our datacenter, we would get our first lost packet after 20 minutes on average. Our application uses a lot of hold music, so this is a real problem for us.

We have created a patch, which we will post to this bug, which uses ztdummy to trigger the outbound RTP packets rather than using the inbound packets to trigger them.

Note that we tested this problem using the very latest version of Asterisk, and the problem is still there.

****** STEPS TO REPRODUCE ******

Add to extensions.conf:

exten => s,1,MusicOnHold

Then run this on the command line on your trusty Asterisk box, using a SIP channel of your choice:

echo "Channel: sip/myprovider/12125551212
Context: moh_test
Extension: s
Priority: 1
Ringtime: 30" > /tmp/moh.call && mv /tmp/moh.call /var/spool/asterisk/outgoing

Place an outbound SIP call to your speakerphone or softphone. Ideal would be to use a softphone on your laptop, so you can generate a second or two of packet loss just by briefly unplugging your ethernet cable from your laptop. By running tcpdump on the Asterisk box, you'll notice that the music on hold applications's outgoing RTP stream stops dead after the first incoming packet is lost.


I tried to fix this by putting rtpkeepalive=1 in the sip.conf, but all this does is keep sending comfort noise packets after the music on hold has stopped.

Comments:By: Simon Rowland (funky) 2008-10-30 15:21:14

Note: we already have a license on file.

By: Joshua C. Colp (jcolp) 2008-12-10 12:11:21.000-0600

It is already possible to use the dahdi / zaptel timing source for outgoing packet generation. It can be enabled using the internal_timing option in the options context of asterisk.conf