diff --git a/dsp.c b/dsp.c
index 02cba6629a58e58a745f57ea09f94ebb6bd1544a..d4359c7902ab1188624abc8eafc41ee7dce6fe31 100755
--- a/dsp.c
+++ b/dsp.c
@@ -1258,12 +1258,12 @@ struct ast_frame *ast_dsp_process(struct ast_channel *chan, struct ast_dsp *dsp,
 							/* If we found a digit, send it now */
 							dsp->f.frametype = AST_FRAME_DTMF;
 							dsp->f.subclass = dsp->thinkdigit;
-							if (chan)
-								ast_queue_frame(chan, &dsp->f, needlock);
+							dsp->thinkdigit = 0;
+						} else {
+							dsp->f.frametype = AST_FRAME_DTMF;
+							dsp->f.subclass = 'u';
+							dsp->thinkdigit = 0;
 						}
-						dsp->f.frametype = AST_FRAME_DTMF;
-						dsp->f.subclass = 'u';
-						dsp->thinkdigit = 0;
 						FIX_INF(af);
 						if (chan)
 							ast_queue_frame(chan, af, needlock);