From 7d5c9f2f551784122a6d4da4e8dc6dc040df810d Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 27 Jul 2022 11:35:21 -0400 Subject: [PATCH] TT#14008 don't use zero connection addresses on ICE enabled media Change-Id: Ic27790339913e429b8220559c5bae559bf6b8d93 --- daemon/sdp.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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; } }