diff --git a/main/bridge.c b/main/bridge.c
index c0e7bd42789d8140eadcf25b7b23cf90e2406f8a..9a64b0ed6a19f2e20e99e57abd5ed6d88410ef83 100644
--- a/main/bridge.c
+++ b/main/bridge.c
@@ -2198,6 +2198,9 @@ static struct ast_bridge *optimize_lock_chan_stack(struct ast_channel *chan)
 	if (!AST_LIST_EMPTY(ast_channel_readq(chan))) {
 		return NULL;
 	}
+	if (ast_test_flag(ast_channel_flags(chan), AST_FLAG_EMULATE_DTMF)) {
+		return NULL;
+	}
 	if (ast_channel_has_audio_frame_or_monitor(chan)) {
 		/* Channel has an active monitor, audiohook, or framehook. */
 		return NULL;
@@ -2244,6 +2247,10 @@ static struct ast_bridge *optimize_lock_peer_stack(struct ast_channel *peer)
 		ast_channel_unlock(peer);
 		return NULL;
 	}
+	if (ast_test_flag(ast_channel_flags(peer), AST_FLAG_EMULATE_DTMF)) {
+		ast_channel_unlock(peer);
+		return NULL;
+	}
 	if (ast_channel_has_audio_frame_or_monitor(peer)) {
 		/* Peer has an active monitor, audiohook, or framehook. */
 		ast_channel_unlock(peer);