Do not delete ICE session when it is in the Failed state.

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.
This commit is contained in:
Ghislain MARY 2012-08-23 09:57:10 +02:00
parent 9b9106c1e7
commit 5276606942
2 changed files with 8 additions and 2 deletions

View file

@ -1718,7 +1718,13 @@ static void handle_ice_events(LinphoneCall *call, OrtpEvent *ev){
}
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;

View file

@ -808,7 +808,7 @@ void linphone_core_update_ice_from_remote_media_description(LinphoneCall *call,
}
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);
}
}