From 37cbac5fa776e6c3ca32992f39de3a89be6680b9 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 19 Sep 2025 13:33:45 -0400 Subject: [PATCH] MT#63317 share ICE context when bundling Change-Id: Iee91f340b46241b30a9a0e6e5eefb268f380576f --- daemon/call.c | 3 +++ daemon/sdp.c | 13 +++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/daemon/call.c b/daemon/call.c index 95ee2db05..534598942 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -3509,6 +3509,9 @@ static void monologue_bundle_set_fds(struct call_monologue *ml) { if (bundle == media) continue; + if (media->ice_agent) + ice_shutdown(&media->ice_agent); + __auto_type msl = media->streams.head; __auto_type bsl = bundle->streams.head; diff --git a/daemon/sdp.c b/daemon/sdp.c index ca384197d..cb5fd9528 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -2962,14 +2962,16 @@ static void print_sdp_media_section(GString *s, struct call_media *media, media->type_id); } - if (MEDIA_ISSET(media, ICE) && media->ice_agent) { - append_attr_to_gstring(s, "ice-ufrag", &media->ice_agent->ufrag[1], flags, + __auto_type ice_agent = media->bundle ? media->bundle->ice_agent : media->ice_agent; + + if (MEDIA_ISSET(media, ICE) && ice_agent) { + append_attr_to_gstring(s, "ice-ufrag", &ice_agent->ufrag[1], flags, media->type_id); - append_attr_to_gstring(s, "ice-pwd", &media->ice_agent->pwd[1], flags, + append_attr_to_gstring(s, "ice-pwd", &ice_agent->pwd[1], flags, media->type_id); } - if (MEDIA_ISSET(media, TRICKLE_ICE) && media->ice_agent) { + if (MEDIA_ISSET(media, TRICKLE_ICE) && ice_agent) { append_attr_to_gstring(s, "ice-options", &STR_CONST("trickle"), flags, media->type_id); } @@ -2977,9 +2979,8 @@ static void print_sdp_media_section(GString *s, struct call_media *media, insert_candidates(s, rtp_ps, ps_rtcp, flags, NULL); } - if ((MEDIA_ISSET(media, TRICKLE_ICE) && media->ice_agent)) { + if ((MEDIA_ISSET(media, TRICKLE_ICE) && ice_agent)) append_null_attr_to_gstring(s, "end-of-candidates", flags, media->type_id); - } return; }