url: remove vlc_UrlParse() option parameter
authorRémi Denis-Courmont <remi@remlab.net>
Thu, 27 Aug 2015 18:22:25 +0000 (21:22 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Thu, 27 Aug 2015 18:35:34 +0000 (21:35 +0300)
That parameter assumed that the query was part of the path. However it
is not, which leads to invalid host name, and eventually failure when
the path is missing. In practice, passing any value other than '?' as
separator would not work properly.

Remaining vlc_UrlParse() call sites without the option separator do not
support query at the protocol level anyway, so they are unaffected by the
change.

Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
26 files changed:
include/vlc_url.h
modules/access/dsm/access.c
modules/access/ftp.c
modules/access/gnomevfs.c
modules/access/http.c
modules/access/live555.cpp
modules/access/mms/mmsh.c
modules/access/mms/mmstu.c
modules/access/rdp.c
modules/access/sftp.c
modules/access/vnc.c
modules/access_output/shout.c
modules/control/oldrc.c
modules/demux/adaptative/http/Chunk.cpp
modules/lua/intf.c
modules/lua/libs/net.c
modules/misc/audioscrobbler.c
modules/misc/rtsp.c
modules/services_discovery/upnp.cpp
modules/stream_out/rtp.c
modules/stream_out/vod.c
share/lua/README.txt
src/input/item.c
src/network/httpd.c
src/test/url.c
src/text/url.c

index 820250f..cbd67ab 100644 (file)
@@ -50,6 +50,6 @@ VLC_API char * decode_URI( char *psz );
 VLC_API char * encode_URI_component( const char *psz ) VLC_MALLOC;
 VLC_API char * make_path( const char *url ) VLC_MALLOC;
 
-VLC_API void vlc_UrlParse (vlc_url_t *, const char *, unsigned char);
+VLC_API void vlc_UrlParse (vlc_url_t *, const char *);
 VLC_API void vlc_UrlClean (vlc_url_t *);
 #endif
index 113914f..60d2120 100644 (file)
@@ -164,7 +164,7 @@ static int Open( vlc_object_t *p_this )
     if( p_sys->p_session == NULL )
         goto error;
 
-    vlc_UrlParse( &p_sys->url, p_access->psz_location, 0 );
+    vlc_UrlParse( &p_sys->url, p_access->psz_location );
     get_credentials( p_access );
     if( get_address( p_access ) != VLC_SUCCESS )
         goto error;
index 36f7bb9..7810985 100644 (file)
@@ -578,7 +578,7 @@ static int parseURL( vlc_url_t *url, const char *path, enum tls_mode_e mode )
     while( *path == '/' )
         path++;
 
-    vlc_UrlParse( url, path, 0 );
+    vlc_UrlParse( url, path );
 
     if( url->psz_host == NULL || *url->psz_host == '\0' )
         return VLC_EGENERIC;
index 9a07e46..18cb87d 100644 (file)
@@ -136,7 +136,7 @@ static int Open( vlc_object_t *p_this )
         char *psz_escaped_path;
         char *psz_path_begin;
 
-        vlc_UrlParse( &url, psz_unescaped, 0 );
+        vlc_UrlParse( &url, psz_unescaped );
         psz_escaped_path = gnome_vfs_escape_path_string( url.psz_path );
 
         if( psz_escaped_path )
index 08d341f..805f5ae 100644 (file)
@@ -287,7 +287,7 @@ static int OpenRedirected( vlc_object_t *p_this, const char *psz_access,
     p = psz = strdup( p_access->psz_location );
     while( (p = strchr( p, ' ' )) != NULL )
         *p = '+';
-    vlc_UrlParse( &p_sys->url, psz, '?' );
+    vlc_UrlParse( &p_sys->url, psz );
     free( psz );
 
     if( p_sys->url.psz_host == NULL || *p_sys->url.psz_host == '\0' )
@@ -372,7 +372,7 @@ static int OpenRedirected( vlc_object_t *p_this, const char *psz_access,
     if( psz != NULL )
     {
         p_sys->b_proxy = true;
-        vlc_UrlParse( &p_sys->proxy, psz, '?' );
+        vlc_UrlParse( &p_sys->proxy, psz );
         free( psz );
 
         psz = var_InheritString( p_access, "http-proxy-pwd" );
index 8d40dc7..efd66f3 100644 (file)
@@ -314,7 +314,7 @@ static int  Open ( vlc_object_t *p_this )
     vlc_mutex_init(&p_sys->timeout_mutex);
 
     /* parse URL for rtsp://[user:[passwd]@]serverip:port/options */
-    vlc_UrlParse( &p_sys->url, p_sys->psz_path, '?' );
+    vlc_UrlParse( &p_sys->url, p_sys->psz_path );
 
     if( ( p_sys->scheduler = BasicTaskScheduler::createNew() ) == NULL )
     {
index 4241b21..d9c4ffe 100644 (file)
@@ -105,7 +105,7 @@ int MMSHOpen( access_t *p_access )
     if( psz_proxy )
     {
         p_sys->b_proxy = true;
-        vlc_UrlParse( &p_sys->proxy, psz_proxy, '?' );
+        vlc_UrlParse( &p_sys->proxy, psz_proxy );
         free( psz_proxy );
     }
     else
@@ -114,7 +114,7 @@ int MMSHOpen( access_t *p_access )
         if( http_proxy )
         {
             p_sys->b_proxy = true;
-            vlc_UrlParse( &p_sys->proxy, http_proxy, '?' );
+            vlc_UrlParse( &p_sys->proxy, http_proxy );
         }
     }
 
@@ -136,7 +136,7 @@ int MMSHOpen( access_t *p_access )
     }
 
     /* open a tcp connection */
-    vlc_UrlParse( &p_sys->url, p_access->psz_location, '?' );
+    vlc_UrlParse( &p_sys->url, p_access->psz_location );
     if( ( p_sys->url.psz_host == NULL ) ||
         ( *p_sys->url.psz_host == '\0' ) )
     {
index a0e5cec..232bbd0 100644 (file)
@@ -105,7 +105,7 @@ int  MMSTUOpen( access_t *p_access )
     vlc_mutex_init( &p_sys->lock_netwrite );
 
     /* *** Parse URL and get server addr/port and path *** */
-    vlc_UrlParse( &p_sys->url, p_access->psz_location, '?' );
+    vlc_UrlParse( &p_sys->url, p_access->psz_location );
     if( p_sys->url.psz_host == NULL || *p_sys->url.psz_host == '\0' )
     {
         msg_Err( p_access, "invalid server name" );
index 62611e9..d9d05a2 100644 (file)
@@ -458,7 +458,7 @@ static int Open( vlc_object_t *p_this )
 
     /* Parse uri params for pre-connect */
     vlc_url_t url;
-    vlc_UrlParse( &url, p_demux->psz_location, 0 );
+    vlc_UrlParse( &url, p_demux->psz_location );
 
     if ( !EMPTY_STR(url.psz_host) )
         p_sys->psz_hostname = strdup( url.psz_host );
index e308a18..7682918 100644 (file)
@@ -130,7 +130,7 @@ static int Open( vlc_object_t* p_this )
     p_sys->i_socket = -1;
 
     /* Parse the URL */
-    vlc_UrlParse( &url, p_access->psz_location, 0 );
+    vlc_UrlParse( &url, p_access->psz_location );
 
     /* Check for some parameters */
     if( EMPTY_STR( url.psz_host ) )
index 9d898e0..9a81f03 100644 (file)
@@ -442,7 +442,7 @@ static int Open( vlc_object_t *p_this )
 
     /* Parse uri params */
     vlc_url_t url;
-    vlc_UrlParse( &url, p_demux->psz_location, 0 );
+    vlc_UrlParse( &url, p_demux->psz_location );
 
     if ( !EMPTY_STR(url.psz_host) )
         p_sys->p_client->serverHost = strdup( url.psz_host );
index 127af94..5a844c7 100644 (file)
@@ -184,7 +184,7 @@ static int Open( vlc_object_t *p_this )
         return VLC_EGENERIC;
     }
 
-    vlc_UrlParse( &url , p_access->psz_path, 0 );
+    vlc_UrlParse( &url , p_access->psz_path );
     if( url.i_port <= 0 )
         url.i_port = 8000;
 
index b0f62d1..6a6f1cd 100644 (file)
@@ -301,7 +301,7 @@ static int Activate( vlc_object_t *p_this )
     {
         vlc_url_t url;
 
-        vlc_UrlParse( &url, psz_host, 0 );
+        vlc_UrlParse( &url, psz_host );
 
         msg_Dbg( p_intf, "base: %s, port: %d", url.psz_host, url.i_port );
 
index 29c8d39..12ff8fb 100644 (file)
@@ -54,7 +54,7 @@ Chunk::Chunk        (const std::string& url) :
         throw VLC_EGENERIC;
 
     vlc_url_t url_components;
-    vlc_UrlParse(&url_components, url.c_str(), '?');
+    vlc_UrlParse(&url_components, url.c_str());
 
     if(url_components.psz_path)
         path = url_components.psz_path;
index c183530..3fc48f9 100644 (file)
@@ -90,7 +90,7 @@ static char *MakeConfig( intf_thread_t *p_intf, const char *name )
         else
         {
             vlc_url_t url;
-            vlc_UrlParse( &url, psz_host, 0 );
+            vlc_UrlParse( &url, psz_host );
             unsigned i_port = var_InheritInteger( p_intf, "telnet-port" );
             if ( url.i_port != 0 )
             {
index b96c2d8..3d760bf 100644 (file)
@@ -166,10 +166,9 @@ static void vlclua_fd_unmap_safe( lua_State *L, unsigned idx )
 static int vlclua_url_parse( lua_State *L )
 {
     const char *psz_url = luaL_checkstring( L, 1 );
-    const char *psz_option = luaL_optstring( L, 2, NULL );
     vlc_url_t url;
 
-    vlc_UrlParse( &url, psz_url, psz_option?*psz_option:0 );
+    vlc_UrlParse( &url, psz_url );
 
     lua_newtable( L );
     lua_pushstring( L, url.psz_protocol );
index df436b7..bbbf69a 100644 (file)
@@ -644,7 +644,7 @@ static int Handshake(intf_thread_t *p_this)
         goto oom;
 
     /* parse the submission url */
-    vlc_UrlParse(&p_sys->p_submit_url, psz_url, 0);
+    vlc_UrlParse(&p_sys->p_submit_url, psz_url);
     free(psz_url);
 
     return VLC_SUCCESS;
index 6dc8119..5f22356 100644 (file)
@@ -256,7 +256,7 @@ static int Open( vlc_object_t *p_this )
     vlc_url_t url;
 
     psz_url = var_InheritString( p_vod, "rtsp-host" );
-    vlc_UrlParse( &url, psz_url, 0 );
+    vlc_UrlParse( &url, psz_url );
     free( psz_url );
 
     p_vod->p_sys = p_sys = malloc( sizeof( vod_sys_t ) );
index 27e965c..2eaaf20 100644 (file)
@@ -543,7 +543,7 @@ MediaServer::~MediaServer()
 input_item_t* MediaServer::newItem(const char *objectID, const char *title )
 {
     vlc_url_t url;
-    vlc_UrlParse( &url, url_.c_str(), '?' );
+    vlc_UrlParse( &url, url_.c_str() );
     char* psz_url;
 
     if (asprintf( &psz_url, "upnp://%s://%s:%u%s?ObjectID=%s", url.psz_protocol,
@@ -673,7 +673,7 @@ void MediaServer::fetchContents()
 {
     const char* objectID = "";
     vlc_url_t url;
-    vlc_UrlParse( &url, access_->psz_location, '?');
+    vlc_UrlParse( &url, access_->psz_location );
 
     if ( url.psz_option && !strncmp( url.psz_option, "ObjectID=", strlen( "ObjectID=" ) ) )
     {
index 7a03ba0..b3a8726 100644 (file)
@@ -699,7 +699,7 @@ static void SDPHandleUrl( sout_stream_t *p_stream, const char *psz_url )
     sout_stream_sys_t *p_sys = p_stream->p_sys;
     vlc_url_t url;
 
-    vlc_UrlParse( &url, psz_url, 0 );
+    vlc_UrlParse( &url, psz_url );
     if( url.psz_protocol && !strcasecmp( url.psz_protocol, "http" ) )
     {
         if( p_sys->p_httpd_file )
index f0e66c3..9c75198 100644 (file)
@@ -127,7 +127,7 @@ int OpenVoD( vlc_object_t *p_this )
     else
     {
         vlc_url_t url;
-        vlc_UrlParse( &url, psz_url, 0 );
+        vlc_UrlParse( &url, psz_url );
         free( psz_url );
 
         if( url.psz_path == NULL )
index a3fea24..ebe44a3 100644 (file)
@@ -163,7 +163,7 @@ Net
 /!\ NB: this namespace is ONLY usable for interfaces and extensions.
 ---
 ----------------------------------------------------------------
-net.url_parse( url, [option delimiter] ): Parse URL. Returns a table with
+net.url_parse( url ): Parse URL. Returns a table with
   fields "protocol", "username", "password", "host", "port", path" and
   "option".
 net.listen_tcp( host, port ): Listen to TCP connections. This returns an
index 6f38e32..3248a84 100644 (file)
@@ -339,7 +339,7 @@ void input_item_SetURI( input_item_t *p_i, const char *psz_uri )
         int r;
         vlc_url_t url;
 
-        vlc_UrlParse( &url, psz_uri, 0 );
+        vlc_UrlParse( &url, psz_uri );
         if( url.psz_protocol )
         {
             if( url.i_port > 0 )
index 2af6b4e..7c924a8 100644 (file)
@@ -916,7 +916,7 @@ static httpd_host_t *httpd_HostCreate(vlc_object_t *p_this,
     unsigned port = var_InheritInteger(p_this, portvar);
 
     vlc_url_t url;
-    vlc_UrlParse(&url, hostname, 0);
+    vlc_UrlParse(&url, hostname);
     free(hostname);
     if (url.i_port != 0) {
         msg_Err(p_this, "Ignoring port %d (using %d)", url.i_port, port);
index f1fa69a..38f5296 100644 (file)
@@ -99,7 +99,7 @@ static void test_url_parse(const char* in, const char* protocol, const char* use
         assert(b != NULL && !strcmp((a), (b)))
 
     vlc_url_t url;
-    vlc_UrlParse( &url, in, '?' );
+    vlc_UrlParse( &url, in );
     CHECK( url.psz_protocol, protocol );
     CHECK( url.psz_username, user );
     CHECK( url.psz_password, pass );
index 9ba900f..aeebfea 100644 (file)
@@ -350,13 +350,11 @@ static char *vlc_idna_to_ascii (const char *);
  * Splits an URL into parts.
  * \param url structure of URL parts [OUT]
  * \param str nul-terminated URL string to split
- * \param opt if non-zero, character separating paths from options,
- *            normally the question mark
  * \note Use vlc_UrlClean() to free associated resources
  * \bug Errors cannot be detected.
  * \return nothing
  */
-void vlc_UrlParse (vlc_url_t *restrict url, const char *str, unsigned char opt)
+void vlc_UrlParse (vlc_url_t *restrict url, const char *str)
 {
     url->psz_protocol = NULL;
     url->psz_username = NULL;
@@ -396,14 +394,11 @@ void vlc_UrlParse (vlc_url_t *restrict url, const char *str, unsigned char opt)
     }
 
     /* Query parameters */
-    if (opt != '\0')
+    char *query = strchr (cur, '?');
+    if (query != NULL)
     {
-        char *query = strchr (cur, opt);
-        if (query != NULL)
-        {
-            *(query++) = '\0';
-            url->psz_option = query;
-        }
+        *(query++) = '\0';
+        url->psz_option = query;
     }
 
     /* Path */