Author: markt Date: Tue Sep 6 21:26:11 2016 New Revision: 1759515 URL: http://svn.apache.org/viewvc?rev=1759515&view=rev Log: Revert original fix for Bug 60013
Modified: tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java 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=1759515&r1=1759514&r2=1759515&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 6 21:26:11 2016 @@ -53,15 +53,6 @@ import org.apache.tomcat.util.http.Reque public class RewriteValve extends ValveBase { - private static final URLEncoder QUERY_STRING_ENCODER; - - static { - QUERY_STRING_ENCODER = new URLEncoder(); - QUERY_STRING_ENCODER.addSafeCharacter('='); - QUERY_STRING_ENCODER.addSafeCharacter('&'); - } - - /** * The rewrite rules that the valve will use. */ @@ -332,26 +323,15 @@ public class RewriteValve extends ValveB // - redirect (code) if (rule.isRedirect() && newtest != null) { // append the query string to the url if there is one and it hasn't been rewritten - String originalQueryString = request.getQueryString(); + String queryString = request.getQueryString(); StringBuffer urlString = new StringBuffer(url); - int index = urlString.indexOf("?"); - String encodedUrl; - if (index == -1) { - encodedUrl = URLEncoder.DEFAULT.encode(urlString.toString(), "UTF-8"); - urlString.setLength(0); - urlString.append(encodedUrl); - } else { - encodedUrl = URLEncoder.DEFAULT.encode( - urlString.substring(0, index), "UTF-8"); - urlString.delete(0, index); - urlString.insert(0, encodedUrl); - } - if (originalQueryString != null && originalQueryString.length() > 0) { + if (queryString != null && queryString.length() > 0) { + int index = urlString.indexOf("?"); if (index != -1) { // if qsa is specified append the query if (rule.isQsappend()) { urlString.append('&'); - urlString.append(originalQueryString); + urlString.append(queryString); } // if the ? is the last character delete it, its only purpose was to // prevent the rewrite module from appending the query string @@ -360,7 +340,7 @@ public class RewriteValve extends ValveB } } else { urlString.append('?'); - urlString.append(originalQueryString); + urlString.append(queryString); } } @@ -472,13 +452,10 @@ public class RewriteValve extends ValveB request.getCoyoteRequest().decodedURI().toChars(); // Set the new Query if there is one if (queryString != null) { - // TODO: This isn't perfect. There are some edge cases - // that can only be handled if RewriteValve works - // with the original (undecoded) URI request.getCoyoteRequest().queryString().setString(null); chunk = request.getCoyoteRequest().queryString().getCharChunk(); chunk.recycle(); - chunk.append(QUERY_STRING_ENCODER.encode(queryString, "UTF-8")); + chunk.append(queryString); request.getCoyoteRequest().queryString().toChars(); } // Set the new host if it changed --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org