You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2016/09/06 21:26:11 UTC

svn commit: r1759515 - /tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org