]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
only track calls once they have been answered
authorAnthony Minessale <anthm@freeswitch.org>
Wed, 24 Oct 2012 17:33:13 +0000 (12:33 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Wed, 24 Oct 2012 17:33:13 +0000 (12:33 -0500)
src/switch_channel.c
src/switch_core_sqldb.c

index fd00c5f71e1866fcf1235d83e37c3f8b3303b15a..5ccca55184255ebc9b10a246a6389867a93fed24 100644 (file)
@@ -3395,6 +3395,8 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_answered(switch_chan
 
        switch_channel_audio_sync(channel);
 
+       switch_core_recovery_track(channel->session);
+
        return SWITCH_STATUS_SUCCESS;
 }
 
index e23d427a1b35cf46639d661a0262c24490246cdc..80ab68c110a6a2417f88ad265ce9aec379e44406 100644 (file)
@@ -2722,6 +2722,10 @@ SWITCH_DECLARE(void) switch_core_recovery_untrack(switch_core_session_t *session
        char *sql = NULL;
        switch_channel_t *channel = switch_core_session_get_channel(session);
 
+       if (!switch_channel_test_flag(channel, CF_ANSWERED) || switch_channel_get_state(channel) < CS_SOFT_EXECUTE) {
+               return;
+       }
+
        if (!switch_channel_test_flag(channel, CF_TRACKABLE)) {
                return;
        }
@@ -2756,6 +2760,11 @@ SWITCH_DECLARE(void) switch_core_recovery_track(switch_core_session_t *session)
        const char *profile_name;
        const char *technology;
 
+
+       if (!switch_channel_test_flag(channel, CF_ANSWERED) || switch_channel_get_state(channel) < CS_SOFT_EXECUTE) {
+               return;
+       }
+
        if (switch_channel_test_flag(channel, CF_RECOVERING) || !switch_channel_test_flag(channel, CF_TRACKABLE)) {
                return;
        }