mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-03-13 12:40:17 +00:00
[core] fix possible looping recover
This commit is contained in:
parent
9457bf9082
commit
280ffbc155
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user