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