mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-03-13 20:50:41 +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);
|
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_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_presence(channel, "unknown", "answered", NULL);
|
||||||
|
|
||||||
//switch_channel_audio_sync(channel);
|
//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);
|
switch_channel_set_callstate(channel, CCS_ACTIVE);
|
||||||
|
|
||||||
send_ind(channel, SWITCH_MESSAGE_ANSWER_EVENT, file, func, line);
|
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)
|
static void switch_core_standard_on_hangup(switch_core_session_t *session)
|
||||||
{
|
{
|
||||||
switch_caller_extension_t *extension;
|
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_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)));
|
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);
|
switch_channel_clear_flag(session->channel, CF_RECOVERING);
|
||||||
|
switch_core_recovery_untrack(session, SWITCH_TRUE);
|
||||||
if (!rec) {
|
|
||||||
switch_core_recovery_untrack(session, SWITCH_TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (!switch_channel_test_flag(session->channel, CF_ZOMBIE_EXEC)) {
|
if (!switch_channel_test_flag(session->channel, CF_ZOMBIE_EXEC)) {
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user