summaryrefslogtreecommitdiff
path: root/ext/webrtc/webrtcsdp.c
diff options
context:
space:
mode:
authorMatthew Waters <matthew@centricular.com>2020-05-01 00:47:53 +1000
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>2020-05-01 03:13:46 +0000
commitce9b41f5d4443cdf4825ec3e23794471ce4d6ba6 (patch)
tree98a34799cc7dcdae54d0dd4b9cecf4c6ec0611d7 /ext/webrtc/webrtcsdp.c
parent2510052d124288abb3c282eccc1a3b641e040990 (diff)
downloadgstreamer-plugins-bad-ce9b41f5d4443cdf4825ec3e23794471ce4d6ba6.tar.gz
webrtcbin: fix bundle none case with remote offer bundling
If the remote is bundling, but we are not and remote is offering. we cannot put the remote media sections into a bundled transport as that is not how we are going to respond. This specific failure case was that the remote ICE credentials were never set on the ice stream and so ice connectivity would fail. Technically, this whole bunde-policy=none handling should be removed eventually when we implement bundle-policy=balanced. Until such time, we have this workaround. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1231>
Diffstat (limited to 'ext/webrtc/webrtcsdp.c')
-rw-r--r--ext/webrtc/webrtcsdp.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/ext/webrtc/webrtcsdp.c b/ext/webrtc/webrtcsdp.c
index c6cdf0414..a93a1068e 100644
--- a/ext/webrtc/webrtcsdp.c
+++ b/ext/webrtc/webrtcsdp.c
@@ -919,3 +919,19 @@ _get_bundle_index (GstSDPMessage * sdp, GStrv bundled, guint * idx)
return ret;
}
+
+gboolean
+_media_is_bundle_only (const GstSDPMedia * media)
+{
+ int i;
+
+ for (i = 0; i < gst_sdp_media_attributes_len (media); i++) {
+ const GstSDPAttribute *attr = gst_sdp_media_get_attribute (media, i);
+
+ if (g_strcmp0 (attr->key, "bundle-only") == 0) {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}