diff --git a/src/switch_core_media.c b/src/switch_core_media.c index f999aa97b5..089baeea98 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -7742,6 +7742,13 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_receive_message(switch_core_se } goto end; + case SWITCH_MESSAGE_INDICATE_MEDIA: + { + if (session->track_duration) { + switch_core_session_enable_heartbeat(session, session->track_duration); + } + } + break; case SWITCH_MESSAGE_INDICATE_NOMEDIA: { const char *uuid; @@ -7781,6 +7788,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_receive_message(switch_core_se switch_core_media_absorb_sdp(session); } + if (session->track_duration) { + switch_core_session_enable_heartbeat(session, session->track_duration); + } + } break; diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 38f0369c5b..df499c219e 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -1541,6 +1541,7 @@ SWITCH_DECLARE(void) switch_core_session_enable_heartbeat(switch_core_session_t session->track_duration = seconds; if (switch_channel_test_flag(session->channel, CF_PROXY_MODE) || + switch_true(switch_channel_get_variable_dup(session->channel, "heartbeat_use_scheduler", SWITCH_FALSE, -1)) || switch_true(switch_channel_get_variable_dup(session->channel, "bypass_media", SWITCH_FALSE, -1)) || switch_true(switch_channel_get_variable_dup(session->channel, "bypass_media_after_bridge", SWITCH_FALSE, -1))) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "%s using scheduler due to bypass_media mode\n",