diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c
index 01060976d7737995fa535f96786c37071a0a5867..79631225e271c21cfdd833cba36174333fbc2269 100644
--- a/apps/app_confbridge.c
+++ b/apps/app_confbridge.c
@@ -1587,6 +1587,8 @@ static int confbridge_exec(struct ast_channel *chan, const char *data)
 	/* Set if DTMF should pass through for this user or not */
 	if (ast_test_flag(&user.u_profile, USER_OPT_DTMF_PASS)) {
 		user.features.dtmf_passthrough = 1;
+	} else {
+		user.features.dtmf_passthrough = 0;
 	}
 
 	/* Set dsp threshold values if present */
diff --git a/main/bridge.c b/main/bridge.c
index bc983b1b3c07b2d136b9420e3adc456f183f4dbb..b53079552a35d748d1e74c40aae41526780c2d84 100644
--- a/main/bridge.c
+++ b/main/bridge.c
@@ -3204,6 +3204,8 @@ int ast_bridge_features_init(struct ast_bridge_features *features)
 		return -1;
 	}
 
+	features->dtmf_passthrough = 1;
+
 	return 0;
 }
 
diff --git a/main/features.c b/main/features.c
index 6585aeccdb70ac41ed9242d2383845465821876e..3df0555af4c77cf336ba44fe2592ddeb40294e73 100644
--- a/main/features.c
+++ b/main/features.c
@@ -797,9 +797,6 @@ int ast_bridge_channel_setup_features(struct ast_bridge_channel *bridge_channel)
 {
 	int res = 0;
 
-	/* Always pass through any DTMF digits. */
-	bridge_channel->features->dtmf_passthrough = 1;
-
 	res |= setup_bridge_features_builtin(bridge_channel->features, bridge_channel->chan);
 	res |= setup_bridge_features_dynamic(bridge_channel->features, bridge_channel->chan);