summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Rudenko <mike.rudenko@gmail.com>2024-02-08 01:36:43 +0300
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2024-03-13 11:19:56 +0000
commit50033d03d31da5a1f7b5e8ffb8e03a969d88a3de (patch)
treeaae3381c9621daf3beffaa87038a746ac0342570
parent66283e8865971253015f51e7050035a5b84d04a8 (diff)
rtsp-stream: clear sockets when leaving bin
Since commit 4d86f994, when setting an RTSP media both shared and reusable, streaming cannot be restarted after the first time all the clients disconnect. That happens because the sockets (unlike addresses) of GstRTSPStream are not cleared in gst_rtsp_stream_leave_bin, and on restart sockets and addresses are not allocated in gst_rtsp_stream_allocate_udp_sockets, and then the check in create_sender_part fails. Fix this by clearing sockets in gst_rtsp_stream_leave_bin. Fixes gstreamer/gst-rtsp-server#113 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6347>
-rw-r--r--subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream.c b/subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream.c
index 24e8e63e0b..cbdffadad0 100644
--- a/subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream.c
+++ b/subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream.c
@@ -4225,6 +4225,13 @@ gst_rtsp_stream_leave_bin (GstRTSPStream * stream, GstBin * bin,
gst_rtsp_address_free (priv->server_addr_v6);
priv->server_addr_v6 = NULL;
+ for (i = 0; i < 2; i++) {
+ g_clear_object (&priv->socket_v4[i]);
+ g_clear_object (&priv->socket_v6[i]);
+ g_clear_object (&priv->mcast_socket_v4[i]);
+ g_clear_object (&priv->mcast_socket_v6[i]);
+ }
+
g_mutex_unlock (&priv->lock);
return TRUE;