From 2798a80ebeb1b9667ef73f28454cd206ca0796be Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Sun, 12 Jan 2020 17:04:22 +0200 Subject: [PATCH] webrtcbin: Add handling of unspecified peer-connection-state situation For us it can happen that the DTLS transports are still in the process of connecting while the ICE transport is already completed. This situation is not specified in the spec but conceptually that means it is still in the process of connecting. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/758 --- ext/webrtc/gstwebrtcbin.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ext/webrtc/gstwebrtcbin.c b/ext/webrtc/gstwebrtcbin.c index 11cff80..134f85e 100644 --- a/ext/webrtc/gstwebrtcbin.c +++ b/ext/webrtc/gstwebrtcbin.c @@ -1115,6 +1115,15 @@ _collate_peer_connection_states (GstWebRTCBin * webrtc) return STATE (CONNECTED); } + /* FIXME: Unspecified state that happens for us */ + if ((dtls_all_new_connecting_or_checking + || dtls_all_connected_completed_or_closed) + && (ice_all_new_connecting_or_checking + || ice_all_connected_completed_or_closed)) { + GST_TRACE_OBJECT (webrtc, "returning connecting"); + return STATE (CONNECTING); + } + GST_FIXME_OBJECT (webrtc, "Undefined situation detected, returning old state"); return webrtc->peer_connection_state; -- 2.7.4