diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-03-20 23:33:45 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-03-20 23:33:45 +0000 |
commit | b12ec3e86490769c0568a7d93e07424ebde6f407 (patch) | |
tree | 48606706826d26975d4c7fa03fe9040814fdbe57 /dsp.c | |
parent | ab251c36eb918dc5dc7c70e04ba1b2f11e288a4f (diff) |
Moving from one digit to another digit is still okay
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@670 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'dsp.c')
-rwxr-xr-x | dsp.c | 16 |
1 files changed, 15 insertions, 1 deletions
@@ -1141,8 +1141,22 @@ struct ast_frame *ast_dsp_process(struct ast_channel *chan, struct ast_dsp *dsp, } else { if (digit) { /* Thought we saw one last time. Pretty sure we really have now */ - if (dsp->thinkdigit) + if (dsp->thinkdigit) { + if (dsp->thinkdigit != 'x') { + /* If we found a digit, and we're changing digits, go + ahead and send this one, but DON'T stop confmute because + we're detecting something else, too... */ + memset(&dsp->f, 0, sizeof(dsp->f)); + dsp->f.frametype = AST_FRAME_DTMF; + dsp->f.subclass = dsp->thinkdigit; + FIX_INF(af); + if (chan) + ast_queue_frame(chan, af, needlock); + ast_frfree(af); + } dsp->thinkdigit = digit; + return &dsp->f; + } } else { if (dsp->thinkdigit) { memset(&dsp->f, 0, sizeof(dsp->f)); |