On 6 August 2013 22:30, <[email protected]> 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> > >
