[asterisk-dev] VLDTMF eats DTMF, news at 11 (or look at bugid7868 if you love DTMF)

Joshua Colp jcolp at digium.com
Fri Sep 1 19:34:47 MST 2006


Dan Austin wrote:
> 
>> See bug for further notes... this isn't what you think.
> 
> I see the notes, a little thin on details though.  I checked
> Qwell's updates to chan_skinny, and see how he fixed it.
> I could see how my patch might not be 'right', but the
> fix wasn't exactly clear.
> 
> It seemed odd that chan_skinny could queue a proper series of 
> frames and ast_waitfordigit would get a munged series.  My 
> use of proper and munged is likely, well, munged.
> Instrumenting ast_waitfordigit_full with an ast_log() showed
> the first digit in a series of being of type FRAME_DTMF_BEGIN,
> ,thus ignored, and subsequent frames being type NULL and
> obviously ignored.
> 
> Might I assume that the major issue with my patch was a memory
> leak?  I'm not trying to defend my approach, but to understand
> where I went wrong.
> 
> In any case I'll test the version in svn on Tuesday.  
> 
> Thanks,
> Dan

1. Your patch added (maybe reverted) AST_FRAME_DTMF_BEGIN in the 
waitstream core, this would have caused duplicate received DTMF in 
applications that used the waitstream API.

2. Your patch disregarded DTMF compensation. The return of a null frame 
is on purpose, the DTMF compensation will later send a BEGIN and an END. 
This wasn't happening correctly because of the way chan_skinny operates. 
The channel wasn't in a state where compensation was working correctly. 
By sending a BEGIN and END in chan_skinny during dialing compensation 
doesn't occur and everything works. Once the channel is up after this 
then DTMF compensation works fine.

Joshua Colp
Digium



More information about the asterisk-dev mailing list