]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add heartbeat_fire_on_set variable to fire heartbeat instantly when its first enabled...
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 19 May 2014 23:07:47 +0000 (04:07 +0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 19 May 2014 23:07:47 +0000 (04:07 +0500)
src/switch_core_session.c

index f774d6349f17f4bcb515d8576457c1ccdf1f92c8..15f18c5ab0445f1c31e9e88beaac8c57c71b3ec1 100644 (file)
@@ -1524,9 +1524,16 @@ SWITCH_DECLARE(void) switch_core_session_unsched_heartbeat(switch_core_session_t
 
 SWITCH_DECLARE(void) switch_core_session_sched_heartbeat(switch_core_session_t *session, uint32_t seconds)
 {
+       time_t when;
 
        switch_core_session_unsched_heartbeat(session);
-       session->track_id = switch_scheduler_add_task(switch_epoch_time_now(NULL) + session->track_duration, sch_heartbeat_callback, (char *) __SWITCH_FUNC__,
+       if (switch_true(switch_channel_get_variable(session->channel, "heartbeat_fire_on_set"))) {
+               when = switch_epoch_time_now(NULL);
+       } else {
+               when = switch_epoch_time_now(NULL) + session->track_duration;
+       }
+
+       session->track_id = switch_scheduler_add_task(when, sch_heartbeat_callback, (char *) __SWITCH_FUNC__,
                                                                                                  switch_core_session_get_uuid(session), 0, strdup(switch_core_session_get_uuid(session)), SSHF_FREE_ARG);
 }
 
@@ -1550,8 +1557,11 @@ SWITCH_DECLARE(void) switch_core_session_enable_heartbeat(switch_core_session_t
                return;
        }
 
-       session->read_frame_count = (session->read_impl.samples_per_second / session->read_impl.samples_per_packet) * seconds;
-
+       if (switch_true(switch_channel_get_variable(session->channel, "heartbeat_fire_on_set"))) {
+               session->read_frame_count = 0;
+       } else {
+               session->read_frame_count = (session->read_impl.samples_per_second / session->read_impl.samples_per_packet) * seconds;
+       }
 
        switch_core_session_unsched_heartbeat(session);