Author: markt
Date: Thu May  4 14:54:58 2017
New Revision: 1793819

URL: http://svn.apache.org/viewvc?rev=1793819&view=rev
Log:
Correct the logic that selects the encoding to use to decode the query string 
in the SSIServletExternalResolver so that the useBodyEncodingForURI attribute 
of the Connector is correctly taken into account.

Modified:
    tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: 
tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java?rev=1793819&r1=1793818&r2=1793819&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java 
Thu May  4 14:54:58 2017
@@ -33,6 +33,7 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.catalina.connector.Connector;
 import org.apache.catalina.connector.Request;
 import org.apache.coyote.Constants;
 import org.apache.tomcat.util.buf.B2CConverter;
@@ -243,10 +244,6 @@ public class SSIServletExternalResolver
                 } else if (nameParts[2].equals("UNESCAPED")) {
                     requiredParts = 3;
                     if (queryString != null) {
-                        // Use default as a last resort
-                        String queryStringEncoding =
-                            Constants.DEFAULT_CHARACTER_ENCODING;
-
                         String uriEncoding = null;
                         boolean useBodyEncodingForURI = false;
 
@@ -254,24 +251,25 @@ public class SSIServletExternalResolver
                         // possible
                         String requestEncoding = req.getCharacterEncoding();
                         if (req instanceof Request) {
-                            uriEncoding =
-                                ((Request)req).getConnector().getURIEncoding();
-                            useBodyEncodingForURI = ((Request)req)
-                                    .getConnector().getUseBodyEncodingForURI();
+                            Connector connector =  
((Request)req).getConnector();
+                            uriEncoding = connector.getURIEncoding();
+                            useBodyEncodingForURI = 
connector.getUseBodyEncodingForURI();
                         }
 
+                        String queryStringEncoding;
+
                         // If valid, apply settings from request / connector
-                        if (uriEncoding != null) {
+                        if (useBodyEncodingForURI && requestEncoding != null) {
+                            queryStringEncoding = requestEncoding;
+                        } else if (uriEncoding != null) {
                             queryStringEncoding = uriEncoding;
-                        } else if(useBodyEncodingForURI) {
-                            if (requestEncoding != null) {
-                                queryStringEncoding = requestEncoding;
-                            }
+                        } else {
+                            // Use default as a last resort
+                            queryStringEncoding = 
Constants.DEFAULT_CHARACTER_ENCODING;
                         }
 
                         try {
-                            retVal = URLDecoder.decode(queryString,
-                                    queryStringEncoding);
+                            retVal = URLDecoder.decode(queryString, 
queryStringEncoding);
                         } catch (UnsupportedEncodingException e) {
                             retVal = queryString;
                         }

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1793819&r1=1793818&r2=1793819&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu May  4 14:54:58 2017
@@ -112,6 +112,12 @@
         <bug>61047</bug>: Add MIME mapping for woff2 fonts in the default
         web.xml. Patch provided by Justin Williamson. (violetagg)
       </add>
+      <fix>
+        Correct the logic that selects the encoding to use to decode the query
+        string in the <code>SSIServletExternalResolver</code> so that the
+        <code>useBodyEncodingForURI</code> attribute of the
+        <code>Connector</code> is correctly taken into account. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to