From d171e156d711dbfb374c8747bbe298b437f70b51 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 24 Apr 2014 23:21:15 +0500 Subject: [PATCH] fix issues with heartbeat in bypass media mode --- src/switch_core_session.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/switch_core_session.c b/src/switch_core_session.c index b4703195ee..38f0369c5b 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -1526,7 +1526,7 @@ SWITCH_DECLARE(void) switch_core_session_sched_heartbeat(switch_core_session_t * { switch_core_session_unsched_heartbeat(session); - session->track_id = switch_scheduler_add_task(switch_epoch_time_now(NULL), sch_heartbeat_callback, (char *) __SWITCH_FUNC__, + session->track_id = switch_scheduler_add_task(switch_epoch_time_now(NULL) + session->track_duration, sch_heartbeat_callback, (char *) __SWITCH_FUNC__, switch_core_session_get_uuid(session), 0, strdup(switch_core_session_get_uuid(session)), SSHF_FREE_ARG); } @@ -1538,17 +1538,20 @@ SWITCH_DECLARE(void) switch_core_session_enable_heartbeat(switch_core_session_t seconds = 60; } - - session->read_frame_count = (session->read_impl.actual_samples_per_second / session->read_impl.samples_per_packet) * seconds; session->track_duration = seconds; - if (switch_channel_test_flag(session->channel, CF_PROXY_MODE)) { + if (switch_channel_test_flag(session->channel, CF_PROXY_MODE) || + 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", switch_channel_get_name(session->channel)); switch_core_session_sched_heartbeat(session, seconds); return; } + session->read_frame_count = (session->read_impl.actual_samples_per_second / session->read_impl.samples_per_packet) * seconds; + + switch_core_session_unsched_heartbeat(session); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "%s setting session heartbeat to %u second(s).\n",