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: [email protected]
For additional commands, e-mail: [email protected]