diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index eda356c05..37d853ef3 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2639,11 +2639,17 @@ static void handle_ice_events(LinphoneCall *call, OrtpEvent *ev){ int ping_time; if (evt == ORTP_EVENT_ICE_SESSION_PROCESSING_FINISHED) { + LinphoneCallParams params; + _linphone_call_params_copy(¶ms,&call->current_params); + if (call->params.media_encryption == LinphoneMediaEncryptionZRTP) { + /* preserve media encryption param because at that time ZRTP negociation may still be ongoing*/ + params.media_encryption=call->params.media_encryption; + } switch (ice_session_state(call->ice_session)) { case IS_Completed: ice_session_select_candidates(call->ice_session); if (ice_session_role(call->ice_session) == IR_Controlling) { - linphone_core_update_call(call->core, call, &call->current_params); + linphone_core_update_call(call->core, call, ¶ms); } break; case IS_Failed: @@ -2651,7 +2657,7 @@ static void handle_ice_events(LinphoneCall *call, OrtpEvent *ev){ ice_session_select_candidates(call->ice_session); if (ice_session_role(call->ice_session) == IR_Controlling) { /* At least one ICE session has succeeded, so perform a call update. */ - linphone_core_update_call(call->core, call, &call->current_params); + linphone_core_update_call(call->core, call, ¶ms); } } break; diff --git a/mediastreamer2 b/mediastreamer2 index 5363f6d64..86110766b 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 5363f6d6487f44c0fa898647b7b859857db13283 +Subproject commit 86110766b0cfbd0ecfd4ab853715e0c3d681385b diff --git a/oRTP b/oRTP index 891f3da68..c09e63ddb 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 891f3da6817e30b606493840f305250f81a254bd +Subproject commit c09e63ddba599a7f7da149edf6f7b290f4cfa787 diff --git a/tester/call_tester.c b/tester/call_tester.c index 067292942..924b08950 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -1312,13 +1312,13 @@ static void srtp_ice_call(void) { call_base(LinphoneMediaEncryptionSRTP,FALSE,FALSE,LinphonePolicyUseIce); } static void zrtp_video_ice_call(void) { - /*encrypted_ice_call(LinphoneMediaEncryptionZRTP,TRUE,FALSE);*/ + call_base(LinphoneMediaEncryptionZRTP,TRUE,FALSE,LinphonePolicyUseIce); } static void zrtp_ice_call(void) { - /*encrypted_ice_call(LinphoneMediaEncryptionZRTP,FALSE,FALSE);*/ + call_base(LinphoneMediaEncryptionZRTP,FALSE,FALSE,LinphonePolicyUseIce); } static void zrtp_ice_call_with_relay(void) { - /*encrypted_ice_call(LinphoneMediaEncryptionZRTP,FALSE,TRUE);*/ + call_base(LinphoneMediaEncryptionZRTP,FALSE,TRUE,LinphonePolicyUseIce); } static void early_media_call(void) {