mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-27 02:30:35 +00:00
rtspsrc: Fix regression when using hostname in the location property
When the address can't be parsed as an IP address, it should just be treated as a hostname and used as-is. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1576 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3420>
This commit is contained in:
parent
c39400b52c
commit
13723198a1
1 changed files with 19 additions and 15 deletions
|
@ -4469,25 +4469,29 @@ element_make_from_addr (const GstURIType type, const char *addr_s,
|
|||
char *uri = NULL;
|
||||
|
||||
addr = g_inet_address_new_from_string (addr_s);
|
||||
|
||||
switch (g_inet_address_get_family (addr)) {
|
||||
case G_SOCKET_FAMILY_IPV6:
|
||||
uri = g_strdup_printf ("udp://[%s]:%i", addr_s, port);
|
||||
break;
|
||||
case G_SOCKET_FAMILY_INVALID:
|
||||
GST_ERROR ("Unknown family type for %s", addr_s);
|
||||
goto out;
|
||||
case G_SOCKET_FAMILY_UNIX:
|
||||
GST_ERROR ("Unexpected family type UNIX for %s", addr_s);
|
||||
goto out;
|
||||
case G_SOCKET_FAMILY_IPV4:
|
||||
uri = g_strdup_printf ("udp://%s:%i", addr_s, port);
|
||||
break;
|
||||
if (addr == NULL) {
|
||||
/* Address is a hostname, not an IP address */
|
||||
uri = g_strdup_printf ("udp://%s:%i", addr_s, port);
|
||||
} else {
|
||||
switch (g_inet_address_get_family (addr)) {
|
||||
case G_SOCKET_FAMILY_IPV6:
|
||||
uri = g_strdup_printf ("udp://[%s]:%i", addr_s, port);
|
||||
break;
|
||||
case G_SOCKET_FAMILY_INVALID:
|
||||
GST_ERROR ("Unknown family type for %s", addr_s);
|
||||
goto out;
|
||||
case G_SOCKET_FAMILY_UNIX:
|
||||
GST_ERROR ("Unexpected family type UNIX for %s", addr_s);
|
||||
goto out;
|
||||
case G_SOCKET_FAMILY_IPV4:
|
||||
uri = g_strdup_printf ("udp://%s:%i", addr_s, port);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
element = gst_element_make_from_uri (type, uri, name, error);
|
||||
out:
|
||||
g_object_unref (addr);
|
||||
g_clear_object (&addr);
|
||||
g_free (uri);
|
||||
return element;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue