Author: markt
Date: Wed Feb 15 22:22:52 2017
New Revision: 1783155

URL: http://svn.apache.org/viewvc?rev=1783155&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=60722
Take account of the dispatchersUseEncodedPaths setting on the current Context 
when generating paths for dispatches triggered by AsyncContext.dispatch()

Modified:
    tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java
    tomcat/trunk/test/org/apache/catalina/core/TestAsyncContextImpl.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java?rev=1783155&r1=1783154&r2=1783155&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/AsyncContextImpl.java Wed Feb 15 
22:22:52 2017
@@ -41,6 +41,7 @@ import org.apache.catalina.Globals;
 import org.apache.catalina.Host;
 import org.apache.catalina.Valve;
 import org.apache.catalina.connector.Request;
+import org.apache.catalina.util.URLEncoder;
 import org.apache.coyote.ActionCode;
 import org.apache.coyote.AsyncContextCallback;
 import org.apache.coyote.RequestInfo;
@@ -162,6 +163,9 @@ public class AsyncContextImpl implements
         if (pathInfo != null) {
             path += pathInfo;
         }
+        if (this.context.getDispatchersUseEncodedPaths()) {
+            path = URLEncoder.DEFAULT.encode(path, "UTF-8");
+        }
         dispatch(path);
     }
 

Modified: tomcat/trunk/test/org/apache/catalina/core/TestAsyncContextImpl.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/core/TestAsyncContextImpl.java?rev=1783155&r1=1783154&r2=1783155&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/core/TestAsyncContextImpl.java 
(original)
+++ tomcat/trunk/test/org/apache/catalina/core/TestAsyncContextImpl.java Wed 
Feb 15 22:22:52 2017
@@ -2225,7 +2225,19 @@ public class TestAsyncContextImpl extend
 
     // https://bz.apache.org/bugzilla/show_bug.cgi?id=57559
     @Test
-    public void testAsyncRequestURI() throws Exception {
+    public void testAsyncRequestURI_24() throws Exception {
+        doTestAsyncRequestURI("/foo/%24/bar");
+    }
+
+
+    // https://bz.apache.org/bugzilla/show_bug.cgi?id=60722
+    @Test
+    public void testAsyncRequestURI_25() throws Exception {
+        doTestAsyncRequestURI("/foo/%25/bar");
+    }
+
+
+    private void doTestAsyncRequestURI(String uri) throws Exception{
         // Setup Tomcat instance
         Tomcat tomcat = getTomcatInstance();
 
@@ -2239,9 +2251,7 @@ public class TestAsyncContextImpl extend
 
         tomcat.start();
 
-        String uri = "/foo/%24/bar";
-
-        ByteChunk body = getUrl("http://localhost:"; + getPort()+ uri);
+        ByteChunk body = getUrl("http://localhost:"; + getPort() + uri);
 
         Assert.assertEquals(uri, body.toString());
     }

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1783155&r1=1783154&r2=1783155&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Wed Feb 15 22:22:52 2017
@@ -113,6 +113,12 @@
         HTTP OPTIONS response from custom the WebDAV servlet does not include
         TRACE in the returned Allow header. (markt)
       </fix>
+      <fix>
+        <bug>60722</bug>: Take account of the
+        <strong>dispatchersUseEncodedPaths</strong> setting on the current
+        <strong>Context</strong> when generating paths for dispatches triggered
+        by <code>AsyncContext.dispatch()</code>. (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