diff --git a/daemon/sdp.c b/daemon/sdp.c index 4163fa180..5ce06fa33 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -2716,10 +2716,14 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call_monologu } } + bool media_has_ice = MEDIA_ISSET(call_media, ICE); + bool keep_zero_address = ! media_has_ice; + if (session->connection.parsed && sess_conn && flags->ice_option != ICE_FORCE_RELAY) { err = "failed to replace network address"; - if (replace_network_address(chop, &session->connection.address, ps, flags, true)) + if (replace_network_address(chop, &session->connection.address, ps, flags, + keep_zero_address)) goto error; } @@ -2737,7 +2741,7 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call_monologu chopper_append_c(chop, "\r\n"); } - if (MEDIA_ISSET(call_media, ICE) && MEDIA_ISSET(call_media, ICE_LITE_SELF)) + if (media_has_ice && MEDIA_ISSET(call_media, ICE_LITE_SELF)) chopper_append_c(chop, "a=ice-lite\r\n"); @@ -2778,7 +2782,7 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call_monologu if (sdp_media->connection.parsed) { err = "failed to replace media network address"; if (replace_network_address(chop, &sdp_media->connection.address, ps, - flags, true)) + flags, keep_zero_address)) goto error; } }