On 7 August 2013 22:05,  <[email protected]> wrote:
> Author: pmouawad
> Date: Wed Aug  7 21:05:29 2013
> New Revision: 1511488
>
> URL: http://svn.apache.org/r1511488
> Log:
> Bug 54482 - HC fails to follow redirects with non-encoded chars
> Fix as per sebb comment
> Bugzilla Id: 54482
>
> Modified:
>     
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/ConversionUtils.java
>
> Modified: 
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/ConversionUtils.java
> URL: 
> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/ConversionUtils.java?rev=1511488&r1=1511487&r2=1511488&view=diff
> ==============================================================================
> --- 
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/ConversionUtils.java
>  (original)
> +++ 
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/ConversionUtils.java
>  Wed Aug  7 21:05:29 2013
> @@ -18,10 +18,12 @@
>
>  package org.apache.jmeter.protocol.http.util;
>
> +import java.io.UnsupportedEncodingException;
>  import java.net.MalformedURLException;
>  import java.net.URI;
>  import java.net.URISyntaxException;
>  import java.net.URL;
> +import java.net.URLDecoder;
>  import java.nio.charset.Charset;
>  import java.util.ArrayList;
>  import java.util.List;
> @@ -123,15 +125,16 @@ public class ConversionUtils {
>       * @param url non-encoded URL
>       * @return URI which has been encoded as necessary
>       * @throws URISyntaxException
> +     * @throws UnsupportedEncodingException
>       */
> -    public static final URI sanitizeUrl(URL url) throws URISyntaxException {
> +    public static final URI sanitizeUrl(URL url) throws URISyntaxException, 
> UnsupportedEncodingException {
>          URIBuilder builder =
>                  new URIBuilder()
>              .setScheme(url.getProtocol())
>              .setHost(url.getHost())
>              .setPort(url.getPort())
>              .setUserInfo(url.getUserInfo())
> -            .setPath(url.getPath())
> +            .setPath(URLDecoder.decode(url.getPath(), "UTF-8")) // 
> $NON-NLS-1$

This changes the behaviour of the method; the Javadoc needs adjusting.

The method now assumes that the input URL has been (partially)
encoded; it won't work on all unencoded URLs.

For example, the unencoded URL http://localhost/% will cause an Exception.
Any instances of % must have been encoded as %25 within the path portion.

Hopefully that assumption is valid for the use JMeter makes of the
method, but it needs to be documented.

>              .setQuery(url.getQuery());
>          URI uri = builder.build();
>          return uri;
>
>

Reply via email to