From 72360e58a53ed53145247b0b1b280b83430c3dca Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Fri, 27 Jul 2012 15:33:28 +0200 Subject: [PATCH] Check for ICE mismatch and add the ice-mismatch attribute in the SDP if there is a mismatch. --- coreapi/sal_eXosip2_sdp.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/coreapi/sal_eXosip2_sdp.c b/coreapi/sal_eXosip2_sdp.c index dff2de574..baac6583a 100644 --- a/coreapi/sal_eXosip2_sdp.c +++ b/coreapi/sal_eXosip2_sdp.c @@ -250,6 +250,10 @@ static void add_ice_candidates(sdp_message_t *msg, int lineno, const IceCheckLis const IceCandidate *candidate; int i; + if ((ice_check_list_state(ice_cl) == ICL_Failed) && ice_check_list_is_mismatch(ice_cl)) { + sdp_message_a_attribute_add(msg, lineno, osip_strdup("ice-mismatch"), NULL); + return; + } for (i = 0; i < ms_list_size(ice_cl->local_candidates); i++) { candidate = ms_list_nth_data(ice_cl->local_candidates, i); switch (ice_check_list_state(ice_cl)) { @@ -697,6 +701,7 @@ int sdp_to_media_description(sdp_message_t *msg, SalMediaDescription *desc, IceS } else { ice_session_set_role(*ice_session, IR_Controlled); } + ice_session_check_mismatch(*ice_session); } if ((ice_ufrag != NULL) && (ice_pwd != NULL)) { ice_session_set_remote_credentials(*ice_session, ice_ufrag, ice_pwd);