diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 5f5a67ab9..c50223575 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -539,7 +539,7 @@ static void process_call_accepted(LinphoneCore *lc, LinphoneCall *call, SalOp *o /* Handle remote ICE attributes if any. */ if (call->ice_session != NULL && rmd) { - linphone_call_update_ice_from_remote_media_description(call, rmd, FALSE); + linphone_call_update_ice_from_remote_media_description(call, rmd, !sal_call_is_offerer(op)); } switch (call->state){ diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 923279c14..69249d7b7 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -3269,9 +3269,13 @@ LinphoneCall * linphone_core_invite_address_with_params(LinphoneCore *lc, const linphone_call_init_media_streams(call); if (linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseIce) { - /* Defer the start of the call after the ICE gathering process. */ - if (linphone_call_prepare_ice(call,FALSE)==1) - defer=TRUE; + if (lc->sip_conf.sdp_200_ack){ + ms_warning("ICE is not supported when sending INVITE without SDP"); + }else{ + /* Defer the start of the call after the ICE gathering process. */ + if (linphone_call_prepare_ice(call,FALSE)==1) + defer=TRUE; + } } else if (linphone_core_get_firewall_policy(call->core) == LinphonePolicyUseUpnp) { #ifdef BUILD_UPNP diff --git a/tester/call_single_tester.c b/tester/call_single_tester.c index 102a17e7d..e54438f65 100644 --- a/tester/call_single_tester.c +++ b/tester/call_single_tester.c @@ -3357,6 +3357,9 @@ void early_media_without_sdp_in_200_base( bool_t use_video, bool_t use_ice ){ lcs = bctbx_list_append(lcs,pauline->lc); if (use_ice){ linphone_core_set_firewall_policy(marie->lc, LinphonePolicyUseIce); + /* We need RTP symmetric because ICE will put the STUN address in the C line, and no relay is made in this + * scenario.*/ + lp_config_set_int(linphone_core_get_config(pauline->lc), "rtp", "symmetric", 1); } /* Marie calls Pauline, and after the call has rung, transitions to an early_media session @@ -5273,6 +5276,9 @@ static void v6_to_v4_call_without_relay(void){ lcs = bctbx_list_append(lcs, marie->lc); lcs = bctbx_list_append(lcs, pauline->lc); linphone_core_enable_ipv6(pauline->lc, FALSE); + /*RTP symmetric must be enabled for this test to pass, because the IPv4-only client cannot send by itself to + * the IPv6 address in the SDP*/ + lp_config_set_int(linphone_core_get_config(pauline->lc), "rtp", "symmetric", 1); linphone_core_manager_start(pauline, TRUE); if (BC_ASSERT_TRUE(call(marie,pauline))){