aboutsummaryrefslogtreecommitdiffstats
path: root/dsp.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-03-20 23:33:45 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-03-20 23:33:45 +0000
commitb12ec3e86490769c0568a7d93e07424ebde6f407 (patch)
tree48606706826d26975d4c7fa03fe9040814fdbe57 /dsp.c
parentab251c36eb918dc5dc7c70e04ba1b2f11e288a4f (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-xdsp.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/dsp.c b/dsp.c
index 6af5d307f..d349a7db9 100755
--- a/dsp.c
+++ b/dsp.c
@@ -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));