diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 640df5599f25d677d97a09bd06ac3231763679dd..419100212e34dbbe4e8ea21de5fc901ad9e5b6e6 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -5906,12 +5906,13 @@ static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpb
 			else
 				i->dsp = NULL;
 			if (i->dsp) {
-				i->dsp_features = features & ~DSP_PROGRESS_TALK;
+				i->dsp_features = features;
 #if defined(HAVE_PRI) || defined(HAVE_SS7)
 				/* We cannot do progress detection until receives PROGRESS message */
 				if (i->outgoing && ((i->sig == SIG_PRI) || (i->sig == SIG_BRI) || (i->sig == SIG_BRI_PTMP) || (i->sig == SIG_SS7))) {
 					/* Remember requested DSP features, don't treat
 					   talking as ANSWER */
+					i->dsp_features = features & ~DSP_PROGRESS_TALK;
 					features = 0;
 				}
 #endif