[Asterisk-Dev] dropped/ignored back-to-back dtmf ?

Luigi Rizzo rizzo at icir.org
Fri Dec 16 08:22:03 MST 2005


what i saw was between two asterisk instances talking directly to each
other through SIP, so there are no third parties involved, and there
is no audio processing involved because the sender (chan_oss.c)
calls directly ast_queue_frame() with the proper dtmf frames.

It's just a bug somewhere in asterisk, but before posting on mantis
i'd like to find out where exactly, and possibly come up with a fix.

cheers
luigi

On Fri, Dec 16, 2005 at 10:03:54AM -0500, Yaakov Menken wrote:
> We noticed what may be the same issue where a SIP adapter (Linksys PAP2 
> -- from user input to the attached analog phone) or SIP phone (Sipura 
> 841) is sending rfc2833 tones to *, which then forwards (IAX) through a 
> second * server which connected the call (over PSTN or whatever our 
> termination vendors do). Sometimes the destination system recognizes the 
> digits, sometimes not.
> 
> Tilghman suggested correctly that inband solves the problem, but also 
> mentioned that we might lengthen the tone via do_senddigit in channel.c. 
>   If this solves your problem, perhaps the default value should be 
> raised, and/or this made into a config option.
> 
> Yours,
> 
> Yaakov Menken
> 
> Luigi Rizzo wrote:
> > Hi,
> > i am trying to figure out why strings of back-to-back dtmf tones
> > (e.g.  generated from the console through "dial 12345" while a call
> > is active) are processed only partially - the first (one or a few)
> > tones get to the remote side (through sip info if that matters,
> > but rfc2833 gives the same) and the other are dropped.
> > 
> > There must be a timing issue somewhere because enabling
> > more verbose debugging slows down the parties and
> > seems to enable more tones to get through.
> > 
> > Anyways i did a bit of debugging, and noticed that
> > the tones are correctly queued on the sender side and
> > available through ast_read. However, i see only a few
> > INFO messages sent to the remote side, and the
> > stack backtrace below (added in ast_read()) seems
> > to suggest that at some point (in the case below after
> > the second digit) the behaviour should be different.
> > 
> > Any idea on what is the problem ? Perhaps the late
> > arrival of the SIP/2.0 200 OK from the remote party ?
> > 
> > BTW the experiment was run with two instances of
> > asterisk (fresh trunk versions) talking to each other.
> > 
> > 	cheers
> > 	luigi
> > 
> > 
> > *CLI> Dec 16 14:43:43 WARNING[23056]: channel.c:1895 ast_read: frametype 1 subclass 49
> > print_trace: Obtained 12 stack frames.
> > print_trace: 0x805f3ff <ast_read+1087> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x8062029 <ast_bridged_channel+569> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x8062950 <ast_channel_bridge+1952> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x28437d71 <ast_bridge_call+1765> at /home/luigi/luigi_ast/usr/local/lib/asterisk/modules/res_features.so
> > print_trace: 0x2861ae22 <+13362> at /home/luigi/luigi_ast/usr/local/lib/asterisk/modules/app_dial.so
> > print_trace: 0x2861b0de <+14062> at /home/luigi/luigi_ast/usr/local/lib/asterisk/modules/app_dial.so
> > print_trace: 0x806f4d8 <pbx_exec+96> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x8071b40 <pbx_substitute_variables_varshead+1172> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x8072828 <ast_spawn_extension+32> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x8072c20 <ast_exec_extension+1012> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x8073569 <ast_exec_extension+3389> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x2812632c <_thread_start+52> at /usr/lib/libc_r.so.4
> > Dec 16 14:43:43 WARNING[23056]: channel.c:1895 ast_read: frametype 1 subclass 50
> > print_trace: Obtained 12 stack frames.
> > print_trace: 0x805f3ff <ast_read+1087> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x8062029 <ast_bridged_channel+569> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x8062950 <ast_channel_bridge+1952> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x28437d71 <ast_bridge_call+1765> at /home/luigi/luigi_ast/usr/local/lib/asterisk/modules/res_features.so
> > print_trace: 0x2861ae22 <+13362> at /home/luigi/luigi_ast/usr/local/lib/asterisk/modules/app_dial.so
> > print_trace: 0x2861b0de <+14062> at /home/luigi/luigi_ast/usr/local/lib/asterisk/modules/app_dial.so
> > print_trace: 0x806f4d8 <pbx_exec+96> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x8071b40 <pbx_substitute_variables_varshead+1172> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x8072828 <ast_spawn_extension+32> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x8072c20 <ast_exec_extension+1012> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x8073569 <ast_exec_extension+3389> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x2812632c <_thread_start+52> at /usr/lib/libc_r.so.4
> > Dec 16 14:43:43 WARNING[23056]: channel.c:1895 ast_read: frametype 1 subclass 51
> > print_trace: Obtained 3 stack frames.
> > print_trace: 0x805f3ff <ast_read+1087> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x809a9e4 <ast_unregister_indication+528> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x2812632c <_thread_start+52> at /usr/lib/libc_r.so.4
> > Dec 16 14:43:43 WARNING[23056]: channel.c:1895 ast_read: frametype 1 subclass 52
> > print_trace: Obtained 3 stack frames.
> > print_trace: 0x805f3ff <ast_read+1087> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x809a9e4 <ast_unregister_indication+528> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x2812632c <_thread_start+52> at /usr/lib/libc_r.so.4
> > Dec 16 14:43:43 WARNING[23056]: channel.c:1895 ast_read: frametype 1 subclass 53
> > print_trace: Obtained 3 stack frames.
> > print_trace: 0x805f3ff <ast_read+1087> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x809a9e4 <ast_unregister_indication+528> at /home/luigi/luigi_ast/usr/local/sbin/asterisk
> > print_trace: 0x2812632c <_thread_start+52> at /usr/lib/libc_r.so.4
> > 
> > _______________________________________________
> > --Bandwidth and Colocation provided by Easynews.com --
> > 
> > Asterisk-Dev mailing list
> > To UNSUBSCRIBE or update options visit:
> >    http://lists.digium.com/mailman/listinfo/asterisk-dev
> 
> _______________________________________________
> --Bandwidth and Colocation provided by Easynews.com --
> 
> Asterisk-Dev mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev



More information about the asterisk-dev mailing list