switch_core_session_wake_video_thread(channel->session);
}
- if (flag == CF_RECOVERING && !channel->hangup_cause) {
+ if (flag == CF_RECOVERING && !channel->hangup_cause && !switch_channel_test_flag(channel, CF_NO_RECOVER)) {
switch_core_recovery_track(channel->session);
}
switch_channel_presence(channel, "unknown", "answered", NULL);
//switch_channel_audio_sync(channel);
-
- switch_core_recovery_track(channel->session);
-
+
+ if (!switch_channel_test_flag(channel, CF_NO_RECOVER)) {
+ switch_core_recovery_track(channel->session);
+ }
+
switch_channel_set_callstate(channel, CCS_ACTIVE);
send_ind(channel, SWITCH_MESSAGE_ANSWER_EVENT, file, func, line);
static void switch_core_standard_on_hangup(switch_core_session_t *session)
{
switch_caller_extension_t *extension;
- int rec;
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s Standard HANGUP, cause: %s\n",
switch_channel_get_name(session->channel), switch_channel_cause2str(switch_channel_get_cause(session->channel)));
}
}
- rec = switch_channel_test_flag(session->channel, CF_RECOVERING);
switch_channel_clear_flag(session->channel, CF_RECOVERING);
-
- if (!rec) {
- switch_core_recovery_untrack(session, SWITCH_TRUE);
- }
-
+ switch_core_recovery_untrack(session, SWITCH_TRUE);
if (!switch_channel_test_flag(session->channel, CF_ZOMBIE_EXEC)) {
return;