commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex lee (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (VFS-524) The uri include ipv6 address can't be parsed out correctly
Date Wed, 07 May 2014 02:41:23 GMT

     [ https://issues.apache.org/jira/browse/VFS-524?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Alex lee updated VFS-524:
-------------------------

    Description: 
I am using apache commons vfs2 to read and download file in ipv6 enviroment, but it seems
can't parse out ipv6 address correctly
The URI is just like:
ftp://[2002:9ba:b4e:6:a052:5792:c0c9:2330]/test

The error message:
Invalid absolute URI "ftp://[2002:9ba:b4e:6:a052:5792:c0c9:2330]/test".

Caused by : Expecting / to follow the hostname in URI "ftp://[2002:9ba:b4e:6:a052:5792:c0c9:2330]/test".

Deep into the code, I found the root cause is that HostFileNameParser's extractHostName can't
parse out the host name correctly
{noformat}
/**
     * Extracts the hostname from a URI.  The scheme://userinfo@ part has
     * been removed.
     */
    protected String extractHostName(final StringBuilder name)
    {
        final int maxlen = name.length();
        int pos = 0;
        for (; pos < maxlen; pos++)
        {
            final char ch = name.charAt(pos);
            if (ch == '/' || ch == ';' || ch == '?' || ch == ':'
                || ch == '@' || ch == '&' || ch == '=' || ch == '+'
                || ch == '$' || ch == ',')
            {
                break;
            }
        }
        if (pos == 0)
        {
            return null;
        }

        final String hostname = name.substring(0, pos);
        name.delete(0, pos);
        return hostname;
    }
{noformat}
>From the code, we are able to know it will  parse out the host name by colon, but for
ipv6, it will get a wrong host name


  was:
I am using apache commons vfs2 to read and download file in ipv6 enviroment, but it seems
can't parse out ipv6 address correctly
The URI is just like:
ftp://[2002:9ba:b4e:6:a052:5792:c0c9:2330]/test

The error message:
Invalid absolute URI "ftp://[2002:9ba:b4e:6:a052:5792:c0c9:2330]/test".

Caused by : Expecting / to follow the hostname in URI "ftp://[2002:9ba:b4e:6:a052:5792:c0c9:2330]/test".

Deep into the code, I found the root cause is that HostFileNameParser's extractHostName can't
parse out the host name correctly
{noformat}
/**
     * Extracts the hostname from a URI.  The scheme://userinfo@ part has
     * been removed.
     */
    protected String extractHostName(final StringBuilder name)
    {
        final int maxlen = name.length();
        int pos = 0;
        for (; pos < maxlen; pos++)
        {
            final char ch = name.charAt(pos);
            if (ch == '/' || ch == ';' || ch == '?' || ch == ':'
                || ch == '@' || ch == '&' || ch == '=' || ch == '+'
                || ch == '$' || ch == ',')
            {
                break;
            }
        }
        if (pos == 0)
        {
            return null;
        }

        final String hostname = name.substring(0, pos);
        name.delete(0, pos);
        return hostname;
    }
{noformat}


> The uri include ipv6 address can't be parsed out correctly
> ----------------------------------------------------------
>
>                 Key: VFS-524
>                 URL: https://issues.apache.org/jira/browse/VFS-524
>             Project: Commons VFS
>          Issue Type: Bug
>    Affects Versions: 2.0
>            Reporter: Alex lee
>             Fix For: 2.1
>
>
> I am using apache commons vfs2 to read and download file in ipv6 enviroment, but it seems
can't parse out ipv6 address correctly
> The URI is just like:
> ftp://[2002:9ba:b4e:6:a052:5792:c0c9:2330]/test
> The error message:
> Invalid absolute URI "ftp://[2002:9ba:b4e:6:a052:5792:c0c9:2330]/test".
> Caused by : Expecting / to follow the hostname in URI "ftp://[2002:9ba:b4e:6:a052:5792:c0c9:2330]/test".
> Deep into the code, I found the root cause is that HostFileNameParser's extractHostName
can't parse out the host name correctly
> {noformat}
> /**
>      * Extracts the hostname from a URI.  The scheme://userinfo@ part has
>      * been removed.
>      */
>     protected String extractHostName(final StringBuilder name)
>     {
>         final int maxlen = name.length();
>         int pos = 0;
>         for (; pos < maxlen; pos++)
>         {
>             final char ch = name.charAt(pos);
>             if (ch == '/' || ch == ';' || ch == '?' || ch == ':'
>                 || ch == '@' || ch == '&' || ch == '=' || ch == '+'
>                 || ch == '$' || ch == ',')
>             {
>                 break;
>             }
>         }
>         if (pos == 0)
>         {
>             return null;
>         }
>         final String hostname = name.substring(0, pos);
>         name.delete(0, pos);
>         return hostname;
>     }
> {noformat}
> From the code, we are able to know it will  parse out the host name by colon, but for
ipv6, it will get a wrong host name



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message