diff --git a/src/switch_core_io.c b/src/switch_core_io.c index 2478df351f..42f45859d1 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -666,6 +666,13 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess return status; } + if (!(frame->codec && frame->codec->implementation)) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "%s has received a bad frame with no codec!\n", + switch_channel_get_name(session->channel)); + switch_channel_hangup(session->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); + return SWITCH_STATUS_FALSE; + } + switch_assert(frame->codec != NULL); switch_assert(frame->codec->implementation != NULL);