srtsink: Register SRT listen callback before binding socket
authorFrancisco Javier Velázquez-García <francisco.velazquez@appear.net>
Wed, 9 Oct 2024 16:08:10 +0000 (12:08 -0400)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 18 Oct 2024 21:42:46 +0000 (21:42 +0000)
This change https://github.com/Haivision/srt/pull/2683 forces us to
call `srt_listen_callback` before `srt_listen`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7687>

subprojects/gst-plugins-bad/ext/srt/gstsrtobject.c

index ce15c0b022285ec68b03fd4f6db11076c768530c..986c643a4089696bb84c9ae80f6c0b8870d964d5 100644 (file)
@@ -1198,19 +1198,22 @@ gst_srt_object_wait_connect (GstSRTObject * srtobject, gpointer sa,
   }
   poll_added = TRUE;
 
-  GST_DEBUG_OBJECT (srtobject->element, "Starting to listen on bind socket");
-  if (srt_listen (sock, 1) == SRT_ERROR) {
-    g_set_error (error, GST_RESOURCE_ERROR,
-        GST_RESOURCE_ERROR_OPEN_READ_WRITE, "Cannot listen on bind socket: %s",
-        srt_getlasterror_str ());
-    goto failed;
-  }
-
   srtobject->sock = sock;
 
   /* Register the SRT listen callback */
   if (srt_listen_callback (srtobject->sock,
           (srt_listen_callback_fn *) srt_listen_callback_func, srtobject)) {
+    g_set_error (error, GST_RESOURCE_ERROR,
+        GST_RESOURCE_ERROR_OPEN_READ_WRITE,
+        "Failed to register SRT listen callback: %s", srt_getlasterror_str ());
+    goto failed;
+  }
+
+  GST_DEBUG_OBJECT (srtobject->element, "Starting to listen on bind socket");
+  if (srt_listen (sock, 1) == SRT_ERROR) {
+    g_set_error (error, GST_RESOURCE_ERROR,
+        GST_RESOURCE_ERROR_OPEN_READ_WRITE, "Cannot listen on bind socket: %s",
+        srt_getlasterror_str ());
     goto failed;
   }