mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-11 09:55:36 +00:00
rtpsrc: Fix wrong/NULL URI handling
We can reset the URI to NULL and this fix a deadlock in that case or when the URI was invalid. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2132>
This commit is contained in:
parent
fe190fb5eb
commit
788dfdbfa6
1 changed files with 16 additions and 3 deletions
|
@ -177,16 +177,29 @@ gst_rtp_src_set_property (GObject * object, guint prop_id,
|
|||
switch (prop_id) {
|
||||
case PROP_URI:{
|
||||
GstUri *uri = NULL;
|
||||
const gchar *str_uri = g_value_get_string (value);
|
||||
|
||||
GST_RTP_SRC_LOCK (object);
|
||||
uri = gst_uri_from_string (g_value_get_string (value));
|
||||
if (uri == NULL)
|
||||
break;
|
||||
uri = gst_uri_from_string (str_uri);
|
||||
if (uri == NULL) {
|
||||
if (str_uri) {
|
||||
GST_RTP_SRC_UNLOCK (object);
|
||||
GST_ERROR_OBJECT (object, "Invalid uri: %s", str_uri);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (self->uri)
|
||||
gst_uri_unref (self->uri);
|
||||
self->uri = uri;
|
||||
|
||||
if (!uri) {
|
||||
GST_RTP_SRC_UNLOCK (object);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
/* Recursive set to self, do not use the same lock in all property
|
||||
* setters. */
|
||||
g_object_set (self, "address", gst_uri_get_host (self->uri), NULL);
|
||||
|
|
Loading…
Reference in a new issue