webrtcbin: Fix race bringing up sctp data channel
authorDoug Nazar <nazard@nazar.ca>
Mon, 17 May 2021 13:11:54 +0000 (09:11 -0400)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 19 May 2021 05:49:48 +0000 (05:49 +0000)
Notifying before pads are linked can cause the stream to fail to start.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2256>

ext/webrtc/webrtcdatachannel.c

index 7988f0f..16b81d8 100644 (file)
@@ -1020,7 +1020,6 @@ _data_channel_set_sctp_transport (WebRTCDataChannel * channel,
         channel);
     g_signal_connect (sctp, "notify::state", G_CALLBACK (_on_sctp_notify_state),
         channel);
-    _on_sctp_notify_state_unlocked (G_OBJECT (sctp), channel);
   }
   GST_WEBRTC_DATA_CHANNEL_UNLOCK (channel);
 }
@@ -1043,6 +1042,8 @@ webrtc_data_channel_link_to_sctp (WebRTCDataChannel * channel,
               channel->sctp_transport->sctpenc, pad_name))
         g_warn_if_reached ();
       g_free (pad_name);
+
+      _on_sctp_notify_state_unlocked (G_OBJECT (sctp_transport), channel);
     }
   }
 }