From df347a9733ddaf66f4d7eb6870de022606d67e63 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 26 Jul 2012 10:49:12 +0200 Subject: [PATCH] Handle case where ICE is activated and the configured STUN server do not reply. --- coreapi/misc.c | 18 +++++++++++++----- coreapi/sal_eXosip2_sdp.c | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/coreapi/misc.c b/coreapi/misc.c index 2f887bf0c..51f217c70 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -692,17 +692,25 @@ void linphone_core_gather_ice_candidates(LinphoneCore *lc, LinphoneCall *call) } while (!((audio_gatherings[0].response == TRUE) && (audio_gatherings[1].response == TRUE) && (!call->params.has_video || ((video_gatherings[0].response == TRUE) && (video_gatherings[1].response == TRUE))))); - ice_session_compute_candidates_foundations(ice_session); - ice_session_eliminate_redundant_candidates(ice_session); - ice_session_choose_default_candidates(ice_session); + if ((audio_gatherings[0].response == FALSE) || (audio_gatherings[1].response == FALSE) + || (call->params.has_video && ((video_gatherings[0].response == FALSE) || (video_gatherings[1].response == FALSE)))) { + /* Failed some STUN checks, deactivate ICE. */ + ice_session_destroy(ice_session); + ice_session = NULL; + sal_op_set_ice_session(call->op, ice_session); + } else { + ice_session_compute_candidates_foundations(ice_session); + ice_session_eliminate_redundant_candidates(ice_session); + ice_session_choose_default_candidates(ice_session); + } close_socket(audio_gatherings[0].sock); close_socket(audio_gatherings[1].sock); - ice_dump_candidates(audio_check_list); + if (ice_session != NULL) ice_dump_candidates(audio_check_list); if (call->params.has_video && (video_check_list != NULL)) { if (video_gatherings[0].sock != -1) close_socket(video_gatherings[0].sock); if (video_gatherings[1].sock != -1) close_socket(video_gatherings[1].sock); - ice_dump_candidates(video_check_list); + if (ice_session != NULL) ice_dump_candidates(video_check_list); } } diff --git a/coreapi/sal_eXosip2_sdp.c b/coreapi/sal_eXosip2_sdp.c index 688d32c08..fee5a5313 100644 --- a/coreapi/sal_eXosip2_sdp.c +++ b/coreapi/sal_eXosip2_sdp.c @@ -373,7 +373,7 @@ static void add_line(sdp_message_t *msg, int lineno, const SalStreamDescription } /*only add a c= line within the stream description if address are differents*/ - if (strcmp(rtp_addr,sdp_message_c_addr_get(msg, -1, 0))!=0){ + if (rtp_addr[0]!='\0' && strcmp(rtp_addr,sdp_message_c_addr_get(msg, -1, 0))!=0){ bool_t inet6; if (strchr(rtp_addr,':')!=NULL){ inet6=TRUE;