diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 6b96a1941a5bf9d60a7e90aa90ec55749cc52e02..023a2c4c7874ed7cb68cdc8ae2961a9375d1d9ca 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -3233,7 +3233,7 @@ struct ast_frame  *zt_read(struct ast_channel *ast)
 		p->subs[index].f.data = NULL;
 		p->subs[index].f.datalen= 0;
 	}
-	if (p->dsp && !p->ignoredtmf && !index) {
+	if (p->dsp && (!p->ignoredtmf || p->callwaitcas || p->busydetect  || p->callprogress) && !index) {
 		/* Perform busy detection. etc on the zap line */
 		f = ast_dsp_process(ast, p->dsp, &p->subs[index].f, 0);
 		if (f) {