summaryrefslogtreecommitdiff
path: root/dsp.c
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2003-03-20 23:33:45 +0000
committerMark Spencer <markster@digium.com>2003-03-20 23:33:45 +0000
commit8a8e98da619fec4e4ab822f4ac769cc43a0429ee (patch)
tree48606706826d26975d4c7fa03fe9040814fdbe57 /dsp.c
parent5cc201a9cf60944a2dce11816b877207b67ee517 (diff)
Moving from one digit to another digit is still okay
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@670 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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));