[
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)