Moving from one digit to another digit is still okay
authorMark Spencer <markster@digium.com>
Thu, 20 Mar 2003 23:33:45 +0000 (23:33 +0000)
committerMark Spencer <markster@digium.com>
Thu, 20 Mar 2003 23:33:45 +0000 (23:33 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@670 65c4cc65-6c06-0410-ace0-fbb531ad65f3

dsp.c

diff --git a/dsp.c b/dsp.c
index 6af5d30..d349a7d 100755 (executable)
--- 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));