[ 
https://issues.apache.org/jira/browse/IVY-885?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12624510#action_12624510
 ] 

Maarten Coene commented on IVY-885:
-----------------------------------

The problem I see with this change is that the URL could already contains 
escaped characters, like: http://myhost/my%20repo/org/module/ivys/ivy-1.2.xml. 
(the user already escaped the space by %20 in the settings.xml file)
This will result in the following request: 
http://myhost/my%2520repo/org/module/ivys/ivy-1.2.xml, which will return a 404

> Invalid URL when using dynamic ranges
> -------------------------------------
>
>                 Key: IVY-885
>                 URL: https://issues.apache.org/jira/browse/IVY-885
>             Project: Ivy
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.0-beta-1
>            Reporter: Jim Bonanno
>
> Sorry to have two url issues in one day. 
> We are using ivy's ranges to resolve our modules. Ivy first tries to see if 
> the specified version exists before listing the repository. The issue that we 
> hit was when using the range [1,2[. The first request is 
> http://myhost/my-repo/org/module/ivys/ivy-[1,2[.xml.
> This URL is not properly escaped, but apache apparently is very forgiving. 
> When we hosted the ivy repository with another web server that validated the 
> urls the returned status code was not a 404.
> We are working around the problem by again using URI to build the URL so it 
> gets properly escaped. There seems to be some tricks to using the URI class. 
> For example, the constructor that takes a string requires the string is 
> already rfc 2396 compliant. The other constructors will actually escape the 
> URL.
> Here is the modifications we made to the BasicURLHandler.
>         if ( url.getProtocol() == "http" || url.getProtocol() == "https") {
>             try {
>                 URI uri = new URI(url.getProtocol(), null, url.getHost(), 
> url.getPort(), url.getPath(), null, null);
>                 url = uri.toURL();
>             }
>             catch ( URISyntaxException e ) {
>                 IOException ioe = new IOException("Couldn't open connection 
> to '" + url.toString() + "'");
>                 ioe.initCause(e);
>                 throw ioe;
>             }
>         }
>         con = url.openConnection();
> which results in a request 
> http://myhost/my-repo/org/module/ivys/ivy-%5B1,2%5B.xml.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to