[core] fix possible looping recover

This commit is contained in:
Anthony Minessale 2020-04-19 04:03:41 +00:00 committed by Andrey Volk
parent 9457bf9082
commit 280ffbc155
2 changed files with 7 additions and 11 deletions

View File

@ -2190,7 +2190,7 @@ SWITCH_DECLARE(void) switch_channel_clear_flag(switch_channel_t *channel, switch
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);
}
@ -3931,9 +3931,11 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_answered(switch_chan
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);

View File

@ -55,7 +55,6 @@ static void switch_core_standard_on_init(switch_core_session_t *session)
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)));
@ -131,13 +130,8 @@ static void switch_core_standard_on_hangup(switch_core_session_t *session)
}
}
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;