You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by sebb <se...@gmail.com> on 2013/08/07 00:44:01 UTC
Re: svn commit: r1511125 - in /jmeter/trunk: src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java xdocs/changes.xml
On 6 August 2013 22:30, <pm...@apache.org> wrote:
> Author: pmouawad
> Date: Tue Aug 6 21:30:55 2013
> New Revision: 1511125
>
> URL: http://svn.apache.org/r1511125
> Log:
> Bug 54482 - HC fails to follow redirects with non-encoded chars
> Bugzilla Id: 54482
-1
I don't think this is the solution.
The method ConversionUtils.sanitizeUrl(URL) only works for URLs that
are not encoded.
For example, if the URL contains %25 as the encoded version of %, this
will be re-encoded as %2525.
See also comments on the Bugzilla issue.
> Modified:
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
> jmeter/trunk/xdocs/changes.xml
>
> Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java?rev=1511125&r1=1511124&r2=1511125&view=diff
> ==============================================================================
> --- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java (original)
> +++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java Tue Aug 6 21:30:55 2013
> @@ -23,6 +23,7 @@ import java.io.IOException;
> import java.io.InputStream;
> import java.io.OutputStream;
> import java.net.InetAddress;
> +import java.net.URISyntaxException;
> import java.net.URL;
> import java.net.URLDecoder;
> import java.util.ArrayList;
> @@ -69,6 +70,7 @@ import org.apache.jmeter.protocol.http.c
> import org.apache.jmeter.protocol.http.control.CacheManager;
> import org.apache.jmeter.protocol.http.control.CookieManager;
> import org.apache.jmeter.protocol.http.control.HeaderManager;
> +import org.apache.jmeter.protocol.http.util.ConversionUtils;
> import org.apache.jmeter.protocol.http.util.EncoderCache;
> import org.apache.jmeter.protocol.http.util.HTTPArgument;
> import org.apache.jmeter.protocol.http.util.HTTPConstants;
> @@ -314,7 +316,11 @@ public class HTTPHC3Impl extends HTTPHCA
> if (headerLocation == null) { // HTTP protocol violation, but avoids NPE
> throw new IllegalArgumentException("Missing location header");
> }
> - res.setRedirectLocation(headerLocation.getValue());
> + try {
> + res.setRedirectLocation(ConversionUtils.sanitizeUrl(new URL(headerLocation.getValue())).toString());
> + } catch (URISyntaxException e) {
> + log.error("Error sanitizing URL:"+headerLocation.getValue());
> + }
> }
>
> // record some sizes to allow HTTPSampleResult.getBytes() with different options
>
> Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java?rev=1511125&r1=1511124&r2=1511125&view=diff
> ==============================================================================
> --- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java (original)
> +++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java Tue Aug 6 21:30:55 2013
> @@ -26,6 +26,7 @@ import java.io.OutputStream;
> import java.io.UnsupportedEncodingException;
> import java.net.InetAddress;
> import java.net.URI;
> +import java.net.URISyntaxException;
> import java.net.URL;
> import java.net.URLDecoder;
> import java.nio.charset.Charset;
> @@ -102,6 +103,7 @@ import org.apache.jmeter.protocol.http.c
> import org.apache.jmeter.protocol.http.control.CacheManager;
> import org.apache.jmeter.protocol.http.control.CookieManager;
> import org.apache.jmeter.protocol.http.control.HeaderManager;
> +import org.apache.jmeter.protocol.http.util.ConversionUtils;
> import org.apache.jmeter.protocol.http.util.EncoderCache;
> import org.apache.jmeter.protocol.http.util.HC4TrustAllSSLSocketFactory;
> import org.apache.jmeter.protocol.http.util.HTTPArgument;
> @@ -325,7 +327,11 @@ public class HTTPHC4Impl extends HTTPHCA
> if (headerLocation == null) { // HTTP protocol violation, but avoids NPE
> throw new IllegalArgumentException("Missing location header");
> }
> - res.setRedirectLocation(headerLocation.getValue());
> + try {
> + res.setRedirectLocation(ConversionUtils.sanitizeUrl(new URL(headerLocation.getValue())).toString());
> + } catch (URISyntaxException e) {
> + log.error("Error sanitizing URL:"+headerLocation.getValue());
> + }
> }
>
> // record some sizes to allow HTTPSampleResult.getBytes() with different options
>
> Modified: jmeter/trunk/xdocs/changes.xml
> URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1511125&r1=1511124&r2=1511125&view=diff
> ==============================================================================
> --- jmeter/trunk/xdocs/changes.xml (original)
> +++ jmeter/trunk/xdocs/changes.xml Tue Aug 6 21:30:55 2013
> @@ -223,6 +223,7 @@ Previously the default was 1, which coul
> <li><bugzilla>55023</bugzilla> - SSL Context reuse feature (51380) adversely affects non-ssl request performance/throughput</li>
> <li><bugzilla>55092</bugzilla> - Log message "WARN - jmeter.protocol.http.sampler.HTTPSamplerBase: Null URL detected (should not happen)" displayed when embedded resource URL is malformed</li>
> <li><bugzilla>55161</bugzilla> - Useless processing in SoapSampler.setPostHeaders</li>
> +<li><bugzilla>54482</bugzilla> - HC fails to follow redirects with non-encoded chars</li>
> </ul>
>
> <h3>Other Samplers</h3>
>
>
Re: svn commit: r1511125 - in /jmeter/trunk: src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java xdocs/changes.xml
Posted by sebb <se...@gmail.com>.
http://localhost:8080/%5B%5D
On 7 August 2013 15:37, Philippe Mouawad <ph...@gmail.com> wrote:
> could you give me an example ?
> thanks
>
> On Wednesday, August 7, 2013, sebb wrote:
>
>> On 7 August 2013 13:56, Philippe Mouawad <philippe.mouawad@gmail.com<javascript:;>>
>> wrote:
>> > Hello sebb,
>> >
>> > I don't think so as for example:
>> >
>> > http://localhost:8080/?%5B%5D!@$%^*()#
>> > Result => http://localhost:8080/?%5B%5D%21%40%24%25%5E*%28%29
>> >
>> >
>> > http://localhost:8080/?%25%5B%5D!@$%^*()#
>> > Result => http://localhost:8080/?%25%5B%5D%21%40%24%25%5E*%28%29
>> >
>>
>> These examples only use % after the ? i.e. as part of the query string.
>> AFAIK query strings are allowed to contain % characters, so they don't
>> get double-encoded by the HC UriBuilder / URLEncodedUtils
>>
>> If % occurs elsewhere, it will be double-encoded.
>>
>> > As you can see no double encode or am I missing something ?
>> >
>> > On Wed, Aug 7, 2013 at 12:44 AM, sebb <se...@gmail.com> wrote:
>> >
>> >> On 6 August 2013 22:30, <pm...@apache.org> wrote:
>> >> > Author: pmouawad
>> >> > Date: Tue Aug 6 21:30:55 2013
>> >> > New Revision: 1511125
>> >> >
>> >> > URL: http://svn.apache.org/r1511125
>> >> > Log:
>> >> > Bug 54482 - HC fails to follow redirects with non-encoded chars
>> >> > Bugzilla Id: 54482
>> >>
>> >> -1
>> >>
>> >> I don't think this is the solution.
>> >>
>> >> The method ConversionUtils.sanitizeUrl(URL) only works for URLs that
>> >> are not encoded.
>> >>
>> >> For example, if the URL contains %25 as the encoded version of %, this
>> >> will be re-encoded as %2525.
>> >>
>> >> See also comments on the Bugzilla issue.
>> >>
>> >> > Modified:
>> >> >
>> >>
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
>> >> >
>> >>
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
>> >> > jmeter/trunk/xdocs/changes.xml
>> >> >
>> >> > Modified:
>> >>
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
>> >> > URL:
>> >>
>> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java?rev=1511125&r1=1511124&r2=1511125&view=diff
>> >> >
>> >>
>> ==============================================================================
>> >> > ---
>> >>
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
>> >> (original)
>> >> > +++
>> >>
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
>> >> Tue Aug 6 21:30:55 2013
>> >> > @@ -23,6 +23,7 @@ import java.io.IOException;
>> >> > import java.io.InputStream;
>> >> > import java.io.OutputStream;
>> >> > import java.net.InetAddress;
>> >> > +import java.net.URISyntaxException;
>> >> > import java.net.URL;
>> >> > import java.net.URLDecoder;
>> >> > import java.util.ArrayList;
>> >> > @@ -69,6 +70,7 @@ import org.apache.jmeter.protocol.http.c
>> >> > import org.apache.jmeter.protocol.http.control.CacheManager;
>> >> > import org.apache.jmeter.protocol.http.control.CookieManager;
>> >> > import org.apache.jmeter.protocol.http.control.HeaderManager;
>> >> > +import org.apache.jmeter.protocol.http.util.ConversionUtils;
>> >> > import org.apache.jmeter.protocol.http.util.EncoderCache;
>> >> > import org.apache.jmeter.protocol.http.util.HTTPArgument;
>> >> > import org.apache.jmeter.protocol.http.util.HTTPConstants;
>> >> > @@ -314,7 +316,11 @@ public class HTTPHC3Impl extends HTTPHCA
>> >> > if (headerLocation == null) { // HTTP protocol
>> >> violation, but avoids NPE
>> >> > throw new IllegalArgumentException("Missing
>> >> location header");
>> >> > }
>> >> > - res.setRedirectLocation(headerLocation.getValue());
>> >> > + try {
>> >> > +
>> >> res.setRedirectLocation(ConversionUtils.sanitizeUrl(new
>> >> URL(headerLocation.getValue())).toString());
>> >> > + } catch (URISyntaxException e) {
>> >> > + log.er
>
>
>
> --
> Cordialement.
> Philippe Mouawad.
Re: svn commit: r1511125 - in /jmeter/trunk: src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java xdocs/changes.xml
Posted by Philippe Mouawad <ph...@gmail.com>.
could you give me an example ?
thanks
On Wednesday, August 7, 2013, sebb wrote:
> On 7 August 2013 13:56, Philippe Mouawad <philippe.mouawad@gmail.com<javascript:;>>
> wrote:
> > Hello sebb,
> >
> > I don't think so as for example:
> >
> > http://localhost:8080/?%5B%5D!@$%^*()#
> > Result => http://localhost:8080/?%5B%5D%21%40%24%25%5E*%28%29
> >
> >
> > http://localhost:8080/?%25%5B%5D!@$%^*()#
> > Result => http://localhost:8080/?%25%5B%5D%21%40%24%25%5E*%28%29
> >
>
> These examples only use % after the ? i.e. as part of the query string.
> AFAIK query strings are allowed to contain % characters, so they don't
> get double-encoded by the HC UriBuilder / URLEncodedUtils
>
> If % occurs elsewhere, it will be double-encoded.
>
> > As you can see no double encode or am I missing something ?
> >
> > On Wed, Aug 7, 2013 at 12:44 AM, sebb <se...@gmail.com> wrote:
> >
> >> On 6 August 2013 22:30, <pm...@apache.org> wrote:
> >> > Author: pmouawad
> >> > Date: Tue Aug 6 21:30:55 2013
> >> > New Revision: 1511125
> >> >
> >> > URL: http://svn.apache.org/r1511125
> >> > Log:
> >> > Bug 54482 - HC fails to follow redirects with non-encoded chars
> >> > Bugzilla Id: 54482
> >>
> >> -1
> >>
> >> I don't think this is the solution.
> >>
> >> The method ConversionUtils.sanitizeUrl(URL) only works for URLs that
> >> are not encoded.
> >>
> >> For example, if the URL contains %25 as the encoded version of %, this
> >> will be re-encoded as %2525.
> >>
> >> See also comments on the Bugzilla issue.
> >>
> >> > Modified:
> >> >
> >>
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
> >> >
> >>
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
> >> > jmeter/trunk/xdocs/changes.xml
> >> >
> >> > Modified:
> >>
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
> >> > URL:
> >>
> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java?rev=1511125&r1=1511124&r2=1511125&view=diff
> >> >
> >>
> ==============================================================================
> >> > ---
> >>
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
> >> (original)
> >> > +++
> >>
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
> >> Tue Aug 6 21:30:55 2013
> >> > @@ -23,6 +23,7 @@ import java.io.IOException;
> >> > import java.io.InputStream;
> >> > import java.io.OutputStream;
> >> > import java.net.InetAddress;
> >> > +import java.net.URISyntaxException;
> >> > import java.net.URL;
> >> > import java.net.URLDecoder;
> >> > import java.util.ArrayList;
> >> > @@ -69,6 +70,7 @@ import org.apache.jmeter.protocol.http.c
> >> > import org.apache.jmeter.protocol.http.control.CacheManager;
> >> > import org.apache.jmeter.protocol.http.control.CookieManager;
> >> > import org.apache.jmeter.protocol.http.control.HeaderManager;
> >> > +import org.apache.jmeter.protocol.http.util.ConversionUtils;
> >> > import org.apache.jmeter.protocol.http.util.EncoderCache;
> >> > import org.apache.jmeter.protocol.http.util.HTTPArgument;
> >> > import org.apache.jmeter.protocol.http.util.HTTPConstants;
> >> > @@ -314,7 +316,11 @@ public class HTTPHC3Impl extends HTTPHCA
> >> > if (headerLocation == null) { // HTTP protocol
> >> violation, but avoids NPE
> >> > throw new IllegalArgumentException("Missing
> >> location header");
> >> > }
> >> > - res.setRedirectLocation(headerLocation.getValue());
> >> > + try {
> >> > +
> >> res.setRedirectLocation(ConversionUtils.sanitizeUrl(new
> >> URL(headerLocation.getValue())).toString());
> >> > + } catch (URISyntaxException e) {
> >> > + log.er
--
Cordialement.
Philippe Mouawad.
Re: svn commit: r1511125 - in /jmeter/trunk: src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java xdocs/changes.xml
Posted by sebb <se...@gmail.com>.
On 7 August 2013 13:56, Philippe Mouawad <ph...@gmail.com> wrote:
> Hello sebb,
>
> I don't think so as for example:
>
> http://localhost:8080/?%5B%5D!@$%^*()#
> Result => http://localhost:8080/?%5B%5D%21%40%24%25%5E*%28%29
>
>
> http://localhost:8080/?%25%5B%5D!@$%^*()#
> Result => http://localhost:8080/?%25%5B%5D%21%40%24%25%5E*%28%29
>
These examples only use % after the ? i.e. as part of the query string.
AFAIK query strings are allowed to contain % characters, so they don't
get double-encoded by the HC UriBuilder / URLEncodedUtils
If % occurs elsewhere, it will be double-encoded.
> As you can see no double encode or am I missing something ?
>
> On Wed, Aug 7, 2013 at 12:44 AM, sebb <se...@gmail.com> wrote:
>
>> On 6 August 2013 22:30, <pm...@apache.org> wrote:
>> > Author: pmouawad
>> > Date: Tue Aug 6 21:30:55 2013
>> > New Revision: 1511125
>> >
>> > URL: http://svn.apache.org/r1511125
>> > Log:
>> > Bug 54482 - HC fails to follow redirects with non-encoded chars
>> > Bugzilla Id: 54482
>>
>> -1
>>
>> I don't think this is the solution.
>>
>> The method ConversionUtils.sanitizeUrl(URL) only works for URLs that
>> are not encoded.
>>
>> For example, if the URL contains %25 as the encoded version of %, this
>> will be re-encoded as %2525.
>>
>> See also comments on the Bugzilla issue.
>>
>> > Modified:
>> >
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
>> >
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
>> > jmeter/trunk/xdocs/changes.xml
>> >
>> > Modified:
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
>> > URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java?rev=1511125&r1=1511124&r2=1511125&view=diff
>> >
>> ==============================================================================
>> > ---
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
>> (original)
>> > +++
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
>> Tue Aug 6 21:30:55 2013
>> > @@ -23,6 +23,7 @@ import java.io.IOException;
>> > import java.io.InputStream;
>> > import java.io.OutputStream;
>> > import java.net.InetAddress;
>> > +import java.net.URISyntaxException;
>> > import java.net.URL;
>> > import java.net.URLDecoder;
>> > import java.util.ArrayList;
>> > @@ -69,6 +70,7 @@ import org.apache.jmeter.protocol.http.c
>> > import org.apache.jmeter.protocol.http.control.CacheManager;
>> > import org.apache.jmeter.protocol.http.control.CookieManager;
>> > import org.apache.jmeter.protocol.http.control.HeaderManager;
>> > +import org.apache.jmeter.protocol.http.util.ConversionUtils;
>> > import org.apache.jmeter.protocol.http.util.EncoderCache;
>> > import org.apache.jmeter.protocol.http.util.HTTPArgument;
>> > import org.apache.jmeter.protocol.http.util.HTTPConstants;
>> > @@ -314,7 +316,11 @@ public class HTTPHC3Impl extends HTTPHCA
>> > if (headerLocation == null) { // HTTP protocol
>> violation, but avoids NPE
>> > throw new IllegalArgumentException("Missing
>> location header");
>> > }
>> > - res.setRedirectLocation(headerLocation.getValue());
>> > + try {
>> > +
>> res.setRedirectLocation(ConversionUtils.sanitizeUrl(new
>> URL(headerLocation.getValue())).toString());
>> > + } catch (URISyntaxException e) {
>> > + log.error("Error sanitizing
>> URL:"+headerLocation.getValue());
>> > + }
>> > }
>> >
>> > // record some sizes to allow HTTPSampleResult.getBytes()
>> with different options
>> >
>> > Modified:
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
>> > URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java?rev=1511125&r1=1511124&r2=1511125&view=diff
>> >
>> ==============================================================================
>> > ---
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
>> (original)
>> > +++
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
>> Tue Aug 6 21:30:55 2013
>> > @@ -26,6 +26,7 @@ import java.io.OutputStream;
>> > import java.io.UnsupportedEncodingException;
>> > import java.net.InetAddress;
>> > import java.net.URI;
>> > +import java.net.URISyntaxException;
>> > import java.net.URL;
>> > import java.net.URLDecoder;
>> > import java.nio.charset.Charset;
>> > @@ -102,6 +103,7 @@ import org.apache.jmeter.protocol.http.c
>> > import org.apache.jmeter.protocol.http.control.CacheManager;
>> > import org.apache.jmeter.protocol.http.control.CookieManager;
>> > import org.apache.jmeter.protocol.http.control.HeaderManager;
>> > +import org.apache.jmeter.protocol.http.util.ConversionUtils;
>> > import org.apache.jmeter.protocol.http.util.EncoderCache;
>> > import org.apache.jmeter.protocol.http.util.HC4TrustAllSSLSocketFactory;
>> > import org.apache.jmeter.protocol.http.util.HTTPArgument;
>> > @@ -325,7 +327,11 @@ public class HTTPHC4Impl extends HTTPHCA
>> > if (headerLocation == null) { // HTTP protocol
>> violation, but avoids NPE
>> > throw new IllegalArgumentException("Missing
>> location header");
>> > }
>> > - res.setRedirectLocation(headerLocation.getValue());
>> > + try {
>> > +
>> res.setRedirectLocation(ConversionUtils.sanitizeUrl(new
>> URL(headerLocation.getValue())).toString());
>> > + } catch (URISyntaxException e) {
>> > + log.error("Error sanitizing
>> URL:"+headerLocation.getValue());
>> > + }
>> > }
>> >
>> > // record some sizes to allow HTTPSampleResult.getBytes()
>> with different options
>> >
>> > Modified: jmeter/trunk/xdocs/changes.xml
>> > URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1511125&r1=1511124&r2=1511125&view=diff
>> >
>> ==============================================================================
>> > --- jmeter/trunk/xdocs/changes.xml (original)
>> > +++ jmeter/trunk/xdocs/changes.xml Tue Aug 6 21:30:55 2013
>> > @@ -223,6 +223,7 @@ Previously the default was 1, which coul
>> > <li><bugzilla>55023</bugzilla> - SSL Context reuse feature (51380)
>> adversely affects non-ssl request performance/throughput</li>
>> > <li><bugzilla>55092</bugzilla> - Log message "WARN -
>> jmeter.protocol.http.sampler.HTTPSamplerBase: Null URL detected (should not
>> happen)" displayed when embedded resource URL is malformed</li>
>> > <li><bugzilla>55161</bugzilla> - Useless processing in
>> SoapSampler.setPostHeaders</li>
>> > +<li><bugzilla>54482</bugzilla> - HC fails to follow redirects with
>> non-encoded chars</li>
>> > </ul>
>> >
>> > <h3>Other Samplers</h3>
>> >
>> >
>>
>
>
>
> --
> Cordialement.
> Philippe Mouawad.
Re: svn commit: r1511125 - in /jmeter/trunk: src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java xdocs/changes.xml
Posted by Philippe Mouawad <ph...@gmail.com>.
Hello sebb,
I don't think so as for example:
http://localhost:8080/?%5B%5D!@$%^*()#
Result => http://localhost:8080/?%5B%5D%21%40%24%25%5E*%28%29
http://localhost:8080/?%25%5B%5D!@$%^*()#
Result => http://localhost:8080/?%25%5B%5D%21%40%24%25%5E*%28%29
As you can see no double encode or am I missing something ?
On Wed, Aug 7, 2013 at 12:44 AM, sebb <se...@gmail.com> wrote:
> On 6 August 2013 22:30, <pm...@apache.org> wrote:
> > Author: pmouawad
> > Date: Tue Aug 6 21:30:55 2013
> > New Revision: 1511125
> >
> > URL: http://svn.apache.org/r1511125
> > Log:
> > Bug 54482 - HC fails to follow redirects with non-encoded chars
> > Bugzilla Id: 54482
>
> -1
>
> I don't think this is the solution.
>
> The method ConversionUtils.sanitizeUrl(URL) only works for URLs that
> are not encoded.
>
> For example, if the URL contains %25 as the encoded version of %, this
> will be re-encoded as %2525.
>
> See also comments on the Bugzilla issue.
>
> > Modified:
> >
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
> >
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
> > jmeter/trunk/xdocs/changes.xml
> >
> > Modified:
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
> > URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java?rev=1511125&r1=1511124&r2=1511125&view=diff
> >
> ==============================================================================
> > ---
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
> (original)
> > +++
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
> Tue Aug 6 21:30:55 2013
> > @@ -23,6 +23,7 @@ import java.io.IOException;
> > import java.io.InputStream;
> > import java.io.OutputStream;
> > import java.net.InetAddress;
> > +import java.net.URISyntaxException;
> > import java.net.URL;
> > import java.net.URLDecoder;
> > import java.util.ArrayList;
> > @@ -69,6 +70,7 @@ import org.apache.jmeter.protocol.http.c
> > import org.apache.jmeter.protocol.http.control.CacheManager;
> > import org.apache.jmeter.protocol.http.control.CookieManager;
> > import org.apache.jmeter.protocol.http.control.HeaderManager;
> > +import org.apache.jmeter.protocol.http.util.ConversionUtils;
> > import org.apache.jmeter.protocol.http.util.EncoderCache;
> > import org.apache.jmeter.protocol.http.util.HTTPArgument;
> > import org.apache.jmeter.protocol.http.util.HTTPConstants;
> > @@ -314,7 +316,11 @@ public class HTTPHC3Impl extends HTTPHCA
> > if (headerLocation == null) { // HTTP protocol
> violation, but avoids NPE
> > throw new IllegalArgumentException("Missing
> location header");
> > }
> > - res.setRedirectLocation(headerLocation.getValue());
> > + try {
> > +
> res.setRedirectLocation(ConversionUtils.sanitizeUrl(new
> URL(headerLocation.getValue())).toString());
> > + } catch (URISyntaxException e) {
> > + log.error("Error sanitizing
> URL:"+headerLocation.getValue());
> > + }
> > }
> >
> > // record some sizes to allow HTTPSampleResult.getBytes()
> with different options
> >
> > Modified:
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
> > URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java?rev=1511125&r1=1511124&r2=1511125&view=diff
> >
> ==============================================================================
> > ---
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
> (original)
> > +++
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
> Tue Aug 6 21:30:55 2013
> > @@ -26,6 +26,7 @@ import java.io.OutputStream;
> > import java.io.UnsupportedEncodingException;
> > import java.net.InetAddress;
> > import java.net.URI;
> > +import java.net.URISyntaxException;
> > import java.net.URL;
> > import java.net.URLDecoder;
> > import java.nio.charset.Charset;
> > @@ -102,6 +103,7 @@ import org.apache.jmeter.protocol.http.c
> > import org.apache.jmeter.protocol.http.control.CacheManager;
> > import org.apache.jmeter.protocol.http.control.CookieManager;
> > import org.apache.jmeter.protocol.http.control.HeaderManager;
> > +import org.apache.jmeter.protocol.http.util.ConversionUtils;
> > import org.apache.jmeter.protocol.http.util.EncoderCache;
> > import org.apache.jmeter.protocol.http.util.HC4TrustAllSSLSocketFactory;
> > import org.apache.jmeter.protocol.http.util.HTTPArgument;
> > @@ -325,7 +327,11 @@ public class HTTPHC4Impl extends HTTPHCA
> > if (headerLocation == null) { // HTTP protocol
> violation, but avoids NPE
> > throw new IllegalArgumentException("Missing
> location header");
> > }
> > - res.setRedirectLocation(headerLocation.getValue());
> > + try {
> > +
> res.setRedirectLocation(ConversionUtils.sanitizeUrl(new
> URL(headerLocation.getValue())).toString());
> > + } catch (URISyntaxException e) {
> > + log.error("Error sanitizing
> URL:"+headerLocation.getValue());
> > + }
> > }
> >
> > // record some sizes to allow HTTPSampleResult.getBytes()
> with different options
> >
> > Modified: jmeter/trunk/xdocs/changes.xml
> > URL:
> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1511125&r1=1511124&r2=1511125&view=diff
> >
> ==============================================================================
> > --- jmeter/trunk/xdocs/changes.xml (original)
> > +++ jmeter/trunk/xdocs/changes.xml Tue Aug 6 21:30:55 2013
> > @@ -223,6 +223,7 @@ Previously the default was 1, which coul
> > <li><bugzilla>55023</bugzilla> - SSL Context reuse feature (51380)
> adversely affects non-ssl request performance/throughput</li>
> > <li><bugzilla>55092</bugzilla> - Log message "WARN -
> jmeter.protocol.http.sampler.HTTPSamplerBase: Null URL detected (should not
> happen)" displayed when embedded resource URL is malformed</li>
> > <li><bugzilla>55161</bugzilla> - Useless processing in
> SoapSampler.setPostHeaders</li>
> > +<li><bugzilla>54482</bugzilla> - HC fails to follow redirects with
> non-encoded chars</li>
> > </ul>
> >
> > <h3>Other Samplers</h3>
> >
> >
>
--
Cordialement.
Philippe Mouawad.