summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2010-06-18 16:16:28 +0200
committerWim Taymans <wim.taymans@collabora.co.uk>2010-06-18 16:16:28 +0200
commite25cdc31d30d5bade601fcc662cecb3f2e707e78 (patch)
tree381dc83ff73d477957afbea5e8e6a8cf2f09442c
parent966ced220858a2f15f1efeb2a739a0db977110d5 (diff)
udp: make url parsing compatible with VLC syntax
Skip everything before the @ sign in the url location. VLC uses that as the remote address to connect to (but we ignore it for now). This makes our udp urls compatible with the ones used by VLC. Fixes #597695
-rw-r--r--gst/udp/gstudpnetutils.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/gst/udp/gstudpnetutils.c b/gst/udp/gstudpnetutils.c
index 85d6f74c6..f488fcc41 100644
--- a/gst/udp/gstudpnetutils.c
+++ b/gst/udp/gstudpnetutils.c
@@ -370,7 +370,7 @@ gst_udp_uri_update (GstUDPUri * uri, const gchar * host, gint port)
int
gst_udp_parse_uri (const gchar * uristr, GstUDPUri * uri)
{
- gchar *protocol;
+ gchar *protocol, *location_start;
gchar *location, *location_end;
gchar *colptr;
@@ -379,11 +379,19 @@ gst_udp_parse_uri (const gchar * uristr, GstUDPUri * uri)
goto wrong_protocol;
g_free (protocol);
- location = gst_uri_get_location (uristr);
- if (!location)
+ location_start = gst_uri_get_location (uristr);
+ if (!location_start)
return FALSE;
- GST_DEBUG ("got location '%s'", location);
+ GST_DEBUG ("got location '%s'", location_start);
+
+ /* VLC compatibility, strip everything before the @ sign. VLC uses that as the
+ * remote address. */
+ location = g_strstr_len (location_start, -1, "@");
+ if (location == NULL)
+ location = location_start;
+ else
+ location += 1;
if (location[0] == '[') {
GST_DEBUG ("parse IPV6 address '%s'", location);
@@ -412,7 +420,7 @@ gst_udp_parse_uri (const gchar * uristr, GstUDPUri * uri)
if (colptr != NULL) {
uri->port = atoi (colptr + 1);
}
- g_free (location);
+ g_free (location_start);
return 0;