Author: markt Date: Tue Sep 20 19:20:46 2016 New Revision: 1761625 URL: http://svn.apache.org/viewvc?rev=1761625&view=rev Log: Another fix for https://bz.apache.org/bugzilla/show_bug.cgi?id=60013 Fix QSA handling when there is no query string
Modified: tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java?rev=1761625&r1=1761624&r2=1761625&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java (original) +++ tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java Tue Sep 20 19:20:46 2016 @@ -532,7 +532,8 @@ public class RewriteValve extends ValveB chunk = request.getCoyoteRequest().queryString().getCharChunk(); chunk.recycle(); chunk.append(ENCODER.encode(queryStringDecoded, uriEncoding)); - if (qsa) { + if (qsa && originalQueryStringEncoded != null && + originalQueryStringEncoded.length() > 0) { chunk.append('&'); chunk.append(originalQueryStringEncoded); } Modified: tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java?rev=1761625&r1=1761624&r2=1761625&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java (original) +++ tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java Tue Sep 20 19:20:46 2016 @@ -409,6 +409,15 @@ public class TestRewriteValve extends To @Test + public void testUtf8WithRewriteQsFlagsQSA() throws Exception { + // Note %C2%A1 == \u00A1 + doTestRewrite("RewriteRule ^/b/(.*)/(.*) /c/\u00A1$1?$2 [QSA]", + "/b/%C2%A1/id=%C2%A1", "/c/%C2%A1%C2%A1", + "id=%C2%A1"); + } + + + @Test public void testUtf8FlagsNone() throws Exception { // Note %C2%A1 == \u00A1 doTestRewrite("RewriteRule ^/b/(.*) /c/\u00A1$1", "/b/%C2%A1", "/c/%C2%A1%C2%A1"); Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1761625&r1=1761624&r2=1761625&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Tue Sep 20 19:20:46 2016 @@ -57,7 +57,7 @@ the Rewrite Valve with mod_rewite. As part of this, provide an implementation for the <code>B</code> and <code>NE</code> flags and improve the handling for the <code>QSA</code> flag. Includes multiple - test cases by Santhana Preethi. (markt) + test cases by Santhana Preethiand a patch by Tiago Oliveira. (markt) </fix> <fix> <bug>60116</bug>: Fix a problem with the rewrite valve that caused back --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org