rtspsrc: Handle the case of * as session-wide control URL from the SDP

Just like the comment above says this is supposed to indicate that the
same URL should be used as for the connection so far. If encountering
this case simply do nothing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6926>
This commit is contained in:
Sebastian Dröge 2024-05-26 14:03:11 +03:00 committed by GStreamer Marge Bot
parent e73e34fd6f
commit e65344afac

View file

@ -8260,23 +8260,29 @@ gst_rtspsrc_open_from_sdp (GstRTSPSrc * src, GstSDPMessage * sdp,
if (control == NULL)
break;
if (g_strcmp0 (control, "*") == 0)
break;
/* only take fully qualified urls */
if (gst_uri_is_valid (control))
break;
}
if (control) {
g_free (src->conninfo.location);
src->conninfo.location = g_strdup (control);
/* make a connection for this, if there was a connection already, nothing
* happens. */
if (gst_rtsp_conninfo_connect (src, &src->conninfo, async) < 0) {
GST_ERROR_OBJECT (src, "could not connect");
if (g_strcmp0 (control, "*") != 0) {
if (control) {
g_free (src->conninfo.location);
src->conninfo.location = g_strdup (control);
/* make a connection for this, if there was a connection already, nothing
* happens. */
if (gst_rtsp_conninfo_connect (src, &src->conninfo, async) < 0) {
GST_ERROR_OBJECT (src, "could not connect");
}
}
/* we need to keep the control url separate from the connection url because
* the rules for constructing the media control url need it */
g_free (src->control);
src->control = g_strdup (control);
}
/* we need to keep the control url separate from the connection url because
* the rules for constructing the media control url need it */
g_free (src->control);
src->control = g_strdup (control);
}
/* create streams */