If the ICE session is deleted it can not be restarted later.
However try to send a re-invite if the session state is Failed but some check
lists have completed successfully.
}
break;
case IS_Failed:
- linphone_call_delete_ice_session(call);
+ if (ice_session_has_completed_check_list(call->ice_session) == TRUE) {
+ if (ice_session_role(call->ice_session) == IR_Controlling) {
+ /* At least one ICE session has succeeded, so perform a call update. */
+ ice_session_select_candidates(call->ice_session);
+ linphone_core_update_call(call->core, call, &call->current_params);
+ }
+ }
break;
default:
break;
}
ice_session_check_mismatch(call->ice_session);
}
- if ((ice_session_state(call->ice_session) == IS_Failed) || (ice_session_nb_check_lists(call->ice_session) == 0)) {
+ if (ice_session_nb_check_lists(call->ice_session) == 0) {
linphone_call_delete_ice_session(call);
}
}