This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 11.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/11.0.x by this push:
new 8771c130b7 Add test case for BZ 69442. Based on #779 by Chenjp
8771c130b7 is described below
commit 8771c130b73dee13bf41677641fdc371ca1d67c9
Author: Mark Thomas <[email protected]>
AuthorDate: Mon Nov 25 10:59:04 2024 +0000
Add test case for BZ 69442. Based on #779 by Chenjp
Also refactor references to application/x-www-form-urlencoded
https://bz.apache.org/bugzilla/show_bug.cgi?id=69442
---
java/org/apache/catalina/Globals.java | 5 ++
.../catalina/authenticator/FormAuthenticator.java | 3 +-
java/org/apache/catalina/connector/Request.java | 2 +-
java/org/apache/catalina/filters/CorsFilter.java | 3 +-
.../servlet/TestServletRequestParameters.java | 4 +-
...TestServletRequestParametersFormUrlEncoded.java | 5 +-
.../authenticator/TestFormAuthenticatorA.java | 4 +-
.../authenticator/TestFormAuthenticatorB.java | 4 +-
.../authenticator/TestFormAuthenticatorC.java | 4 +-
.../org/apache/catalina/connector/TestRequest.java | 82 ++++++++++++++++++----
.../apache/catalina/startup/ExpectationClient.java | 2 +-
.../apache/catalina/startup/SimpleHttpClient.java | 5 ++
.../coyote/ajp/TestAbstractAjpProcessor.java | 3 +-
.../apache/coyote/http11/TestHttp11Processor.java | 14 ++--
.../http11/filters/TestChunkedInputFilter.java | 17 ++---
test/org/apache/coyote/http2/Http2TestBase.java | 3 +-
webapps/docs/changelog.xml | 5 ++
17 files changed, 116 insertions(+), 49 deletions(-)
diff --git a/java/org/apache/catalina/Globals.java
b/java/org/apache/catalina/Globals.java
index 6b2d4ca055..07321120cf 100644
--- a/java/org/apache/catalina/Globals.java
+++ b/java/org/apache/catalina/Globals.java
@@ -236,4 +236,9 @@ public final class Globals {
* Default domain for MBeans if none can be determined
*/
public static final String DEFAULT_MBEAN_DOMAIN = "Catalina";
+
+
+ // ----------------------------------------- Specification related
constants
+
+ public static final String CONTENT_TYPE_FORM_URL_ENCODING =
"application/x-www-form-urlencoded";
}
diff --git a/java/org/apache/catalina/authenticator/FormAuthenticator.java
b/java/org/apache/catalina/authenticator/FormAuthenticator.java
index acb4bdc2c1..62421d24b2 100644
--- a/java/org/apache/catalina/authenticator/FormAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/FormAuthenticator.java
@@ -28,6 +28,7 @@ import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
+import org.apache.catalina.Globals;
import org.apache.catalina.Realm;
import org.apache.catalina.Session;
import org.apache.catalina.connector.Request;
@@ -621,7 +622,7 @@ public class FormAuthenticator extends AuthenticatorBase {
// If no content type specified, use default for POST
String savedContentType = saved.getContentType();
if (savedContentType == null && "POST".equalsIgnoreCase(method)) {
- savedContentType = "application/x-www-form-urlencoded";
+ savedContentType = Globals.CONTENT_TYPE_FORM_URL_ENCODING;
}
contentType.setString(savedContentType);
diff --git a/java/org/apache/catalina/connector/Request.java
b/java/org/apache/catalina/connector/Request.java
index 3fab3f11e9..85125223d6 100644
--- a/java/org/apache/catalina/connector/Request.java
+++ b/java/org/apache/catalina/connector/Request.java
@@ -2809,7 +2809,7 @@ public class Request implements HttpServletRequest {
return;
}
- if (!("application/x-www-form-urlencoded".equals(mediaType))) {
+ if (!(Globals.CONTENT_TYPE_FORM_URL_ENCODING.equals(mediaType))) {
return;
}
diff --git a/java/org/apache/catalina/filters/CorsFilter.java
b/java/org/apache/catalina/filters/CorsFilter.java
index a12b394c4e..eb5e5a2fd8 100644
--- a/java/org/apache/catalina/filters/CorsFilter.java
+++ b/java/org/apache/catalina/filters/CorsFilter.java
@@ -35,6 +35,7 @@ import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
+import org.apache.catalina.Globals;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.http.RequestUtil;
@@ -908,7 +909,7 @@ public class CorsFilter extends GenericFilter {
* @see <a href="http://www.w3.org/TR/cors/#terminology"
>http://www.w3.org/TR/cors/#terminology</a>
*/
public static final Collection<String>
SIMPLE_HTTP_REQUEST_CONTENT_TYPE_VALUES = Collections.unmodifiableSet(
- new HashSet<>(Arrays.asList("application/x-www-form-urlencoded",
"multipart/form-data", "text/plain")));
+ new
HashSet<>(Arrays.asList(Globals.CONTENT_TYPE_FORM_URL_ENCODING,
"multipart/form-data", "text/plain")));
// ------------------------------------------------ Configuration Defaults
/**
diff --git a/test/jakarta/servlet/TestServletRequestParameters.java
b/test/jakarta/servlet/TestServletRequestParameters.java
index 234db96ca0..ac431f03e3 100644
--- a/test/jakarta/servlet/TestServletRequestParameters.java
+++ b/test/jakarta/servlet/TestServletRequestParameters.java
@@ -24,6 +24,7 @@ import org.junit.Test;
import static org.apache.catalina.startup.SimpleHttpClient.CRLF;
import org.apache.catalina.core.StandardContext;
+import org.apache.catalina.startup.SimpleHttpClient;
import org.apache.catalina.startup.Tomcat;
public class TestServletRequestParameters extends
ServletRequestParametersBaseTest {
@@ -50,7 +51,8 @@ public class TestServletRequestParameters extends
ServletRequestParametersBaseTe
client.setPort(getPort());
client.setRequest(new String[] { "POST / HTTP/1.1" + CRLF + "Host:
localhost:" + getPort() + CRLF +
"Connection: close" + CRLF + "Transfer-Encoding: chunked" +
CRLF +
- "Content-Type: application/x-www-form-urlencoded" + CRLF +
CRLF + "0a" + CRLF + "var1=val1&" + CRLF });
+ SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
CRLF + "0a" + CRLF +
+ "var1=val1&" + CRLF });
client.setResponseBodyEncoding(StandardCharsets.UTF_8);
client.connect();
diff --git
a/test/jakarta/servlet/TestServletRequestParametersFormUrlEncoded.java
b/test/jakarta/servlet/TestServletRequestParametersFormUrlEncoded.java
index 4956e1aea2..329d8ff5fa 100644
--- a/test/jakarta/servlet/TestServletRequestParametersFormUrlEncoded.java
+++ b/test/jakarta/servlet/TestServletRequestParametersFormUrlEncoded.java
@@ -31,6 +31,7 @@ import org.junit.runners.Parameterized.Parameter;
import static org.apache.catalina.startup.SimpleHttpClient.CRLF;
import org.apache.catalina.core.StandardContext;
+import org.apache.catalina.startup.SimpleHttpClient;
import org.apache.catalina.startup.Tomcat;
@RunWith(Parameterized.class)
@@ -76,7 +77,7 @@ public class TestServletRequestParametersFormUrlEncoded
extends ServletRequestPa
"Host: localhost:" + getPort() + CRLF +
"Connection: close" + CRLF +
"Transfer-Encoding: chunked" + CRLF +
- "Content-Type: application/x-www-form-urlencoded" + CRLF +
+
SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
CRLF +
"0a" + CRLF +
"var1=val1&" + CRLF +
@@ -91,7 +92,7 @@ public class TestServletRequestParametersFormUrlEncoded
extends ServletRequestPa
"Host: localhost:" + getPort() + CRLF +
"Connection: close" + CRLF +
"Content-Length: 50" + CRLF +
- "Content-Type: application/x-www-form-urlencoded" + CRLF +
+
SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
CRLF +
"01234567890123456789012345678901234567890123456789" });
}
diff --git a/test/org/apache/catalina/authenticator/TestFormAuthenticatorA.java
b/test/org/apache/catalina/authenticator/TestFormAuthenticatorA.java
index 00b63783aa..571da7e087 100644
--- a/test/org/apache/catalina/authenticator/TestFormAuthenticatorA.java
+++ b/test/org/apache/catalina/authenticator/TestFormAuthenticatorA.java
@@ -467,9 +467,7 @@ public class TestFormAuthenticatorA extends TomcatBaseTest {
if (requestTail == null) {
requestTail = "role=bar";
}
- requestHead.append(
- "Content-Type: application/x-www-form-urlencoded")
- .append(CRLF);
+
requestHead.append(SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING);
// calculate post data length
String len = Integer.toString(requestTail.length());
requestHead.append("Content-length:
").append(len).append(CRLF);
diff --git a/test/org/apache/catalina/authenticator/TestFormAuthenticatorB.java
b/test/org/apache/catalina/authenticator/TestFormAuthenticatorB.java
index a8dff997c7..e4705468f0 100644
--- a/test/org/apache/catalina/authenticator/TestFormAuthenticatorB.java
+++ b/test/org/apache/catalina/authenticator/TestFormAuthenticatorB.java
@@ -359,9 +359,7 @@ public class TestFormAuthenticatorB extends TomcatBaseTest {
if (requestTail == null) {
requestTail = "role=bar";
}
- requestHead.append(
- "Content-Type: application/x-www-form-urlencoded")
- .append(CRLF);
+
requestHead.append(SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING);
// calculate post data length
String len = Integer.toString(requestTail.length());
requestHead.append("Content-length:
").append(len).append(CRLF);
diff --git a/test/org/apache/catalina/authenticator/TestFormAuthenticatorC.java
b/test/org/apache/catalina/authenticator/TestFormAuthenticatorC.java
index 78ab635db9..af4bc5818a 100644
--- a/test/org/apache/catalina/authenticator/TestFormAuthenticatorC.java
+++ b/test/org/apache/catalina/authenticator/TestFormAuthenticatorC.java
@@ -361,9 +361,7 @@ public class TestFormAuthenticatorC extends TomcatBaseTest {
if (requestTail == null) {
requestTail = "role=bar";
}
- requestHead.append(
- "Content-Type: application/x-www-form-urlencoded")
- .append(CRLF);
+
requestHead.append(SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING);
// calculate post data length
String len = Integer.toString(requestTail.length());
requestHead.append("Content-length:
").append(len).append(CRLF);
diff --git a/test/org/apache/catalina/connector/TestRequest.java
b/test/org/apache/catalina/connector/TestRequest.java
index 4bfff53596..a4dad4abee 100644
--- a/test/org/apache/catalina/connector/TestRequest.java
+++ b/test/org/apache/catalina/connector/TestRequest.java
@@ -46,6 +46,7 @@ import org.junit.Assert;
import org.junit.Test;
import org.apache.catalina.Context;
+import org.apache.catalina.Globals;
import org.apache.catalina.authenticator.BasicAuthenticator;
import org.apache.catalina.startup.SimpleHttpClient;
import org.apache.catalina.startup.TesterMapRealm;
@@ -54,6 +55,7 @@ import org.apache.catalina.startup.TomcatBaseTest;
import org.apache.tomcat.unittest.TesterRequest;
import org.apache.tomcat.util.buf.ByteChunk;
import org.apache.tomcat.util.buf.EncodedSolidusHandling;
+import org.apache.tomcat.util.buf.StringUtils;
import org.apache.tomcat.util.descriptor.web.LoginConfig;
/**
@@ -172,7 +174,7 @@ public class TestRequest extends TomcatBaseTest {
request[0] =
"POST http://localhost:8080/test HTTP/1.1" + CRLF +
"Host: localhost:8080" + CRLF +
- "content-type: application/x-www-form-urlencoded" +
CRLF +
+
SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
"Transfer-Encoding: CHUNKED" + CRLF +
"Connection: close" + CRLF +
CRLF +
@@ -182,7 +184,7 @@ public class TestRequest extends TomcatBaseTest {
request[0] =
"POST http://localhost:8080/test HTTP/1.1" + CRLF +
"Host: localhost:8080" + CRLF +
- "content-type: application/x-www-form-urlencoded" +
CRLF +
+
SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
"Transfer-Encoding: chunked" + CRLF +
"Connection: close" + CRLF +
CRLF +
@@ -384,7 +386,7 @@ public class TestRequest extends TomcatBaseTest {
// Make sure POST works properly
//
// POST with separate GET and POST parameters
- client.doRequest("POST", "foo=bar",
"application/x-www-form-urlencoded", "bar=baz", true);
+ client.doRequest("POST", "foo=bar",
Globals.CONTENT_TYPE_FORM_URL_ENCODING, "bar=baz", true);
Assert.assertTrue("Non-200 response for POST request",
client.isResponse200());
@@ -395,7 +397,7 @@ public class TestRequest extends TomcatBaseTest {
client.reset();
// POST with overlapping GET and POST parameters
- client.doRequest("POST", "foo=bar&bar=foo",
"application/x-www-form-urlencoded", "bar=baz&foo=baz", true);
+ client.doRequest("POST", "foo=bar&bar=foo",
Globals.CONTENT_TYPE_FORM_URL_ENCODING, "bar=baz&foo=baz", true);
Assert.assertTrue("Non-200 response for POST request",
client.isResponse200());
@@ -406,7 +408,7 @@ public class TestRequest extends TomcatBaseTest {
client.reset();
// PUT without POST-style parsing
- client.doRequest("PUT", "foo=bar&bar=foo",
"application/x-www-form-urlencoded", "bar=baz&foo=baz", false);
+ client.doRequest("PUT", "foo=bar&bar=foo",
Globals.CONTENT_TYPE_FORM_URL_ENCODING, "bar=baz&foo=baz", false);
Assert.assertTrue("Non-200 response for PUT/noparse request",
client.isResponse200());
@@ -417,7 +419,7 @@ public class TestRequest extends TomcatBaseTest {
client.reset();
// PUT with POST-style parsing
- client.doRequest("PUT", "foo=bar&bar=foo",
"application/x-www-form-urlencoded", "bar=baz&foo=baz", true);
+ client.doRequest("PUT", "foo=bar&bar=foo",
Globals.CONTENT_TYPE_FORM_URL_ENCODING, "bar=baz&foo=baz", true);
Assert.assertTrue("Non-200 response for PUT request",
client.isResponse200());
@@ -426,14 +428,6 @@ public class TestRequest extends TomcatBaseTest {
client.getResponseBody());
client.reset();
-
- /*
- private Exception doRequest(String method,
- String queryString,
- String contentType,
- String requestBody,
- boolean allowBody) {
- */
}
@Test
@@ -927,4 +921,64 @@ public class TestRequest extends TomcatBaseTest {
req.getReader();
}
}
+
+
+ /*
+ * https://bz.apache.org/bugzilla/show_bug.cgi?id=69442
+ */
+ @Test
+ public void testTestParameterMediaTypeLowerCase() throws Exception {
+ // toLowerCase() is unnecessary but keep it in case the constant is
changed in the future
+
doTestParameterMediaTypeCase(Globals.CONTENT_TYPE_FORM_URL_ENCODING.toLowerCase(Locale.ENGLISH));
+ }
+
+
+ /*
+ * https://bz.apache.org/bugzilla/show_bug.cgi?id=69442
+ */
+ @Test
+ public void testTestParameterMediaTypeUpperCase() throws Exception {
+
doTestParameterMediaTypeCase(Globals.CONTENT_TYPE_FORM_URL_ENCODING.toUpperCase(Locale.ENGLISH));
+ }
+
+
+ private void doTestParameterMediaTypeCase(String contentType) throws
Exception {
+ // Setup Tomcat instance
+ Tomcat tomcat = getTomcatInstance();
+
+ // No file system docBase required
+ Context ctx = getProgrammaticRootContext();
+
+ Tomcat.addServlet(ctx, "servlet", new Bug69442Servlet());
+ ctx.addServletMappingDecoded("/", "servlet");
+
+ tomcat.start();
+
+ ByteChunk bc = new ByteChunk();
+ Map<String,List<String>> reqHeaders = new HashMap<>();
+ reqHeaders.put("Content-Type", Arrays.asList(contentType));
+ postUrl("a=b&c=d".getBytes(), "http://localhost:" + getPort() + "/",
bc, reqHeaders, null);
+ String responseBody = bc.toString();
+ Assert.assertTrue(responseBody, responseBody.contains("a=b"));
+ Assert.assertTrue(responseBody, responseBody.contains("c=d"));
+ }
+
+
+ private static class Bug69442Servlet extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse
resp) throws ServletException, IOException {
+ resp.setContentType("text/plain");
+ resp.setCharacterEncoding(StandardCharsets.UTF_8);
+ PrintWriter pw = resp.getWriter();
+ Enumeration<String> names = req.getParameterNames();
+ while (names.hasMoreElements()) {
+ String name = names.nextElement();
+ String[] values = req.getParameterValues(name);
+ pw.println(name + "=" + StringUtils.join(values));
+ }
+ }
+ }
}
diff --git a/test/org/apache/catalina/startup/ExpectationClient.java
b/test/org/apache/catalina/startup/ExpectationClient.java
index ef7722b10e..a9e14bb696 100644
--- a/test/org/apache/catalina/startup/ExpectationClient.java
+++ b/test/org/apache/catalina/startup/ExpectationClient.java
@@ -28,7 +28,7 @@ public class ExpectationClient extends SimpleHttpClient {
requestHeaders.append("POST /echo HTTP/1.1").append(CRLF);
requestHeaders.append("Host: localhost").append(CRLF);
requestHeaders.append("Expect: 100-continue").append(CRLF);
- requestHeaders.append("Content-Type:
application/x-www-form-urlencoded").append(CRLF);
+
requestHeaders.append(SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING);
String len = Integer.toString(BODY.length());
requestHeaders.append("Content-length: ").append(len).append(CRLF);
requestHeaders.append(CRLF);
diff --git a/test/org/apache/catalina/startup/SimpleHttpClient.java
b/test/org/apache/catalina/startup/SimpleHttpClient.java
index 00943970d5..70757f36b4 100644
--- a/test/org/apache/catalina/startup/SimpleHttpClient.java
+++ b/test/org/apache/catalina/startup/SimpleHttpClient.java
@@ -37,6 +37,8 @@ import java.util.Locale;
import org.junit.Assert;
+import org.apache.catalina.Globals;
+
/**
* Simple client for unit testing. It isn't robust, it isn't secure and
* should not be used as the basis for production code. Its only purpose
@@ -50,6 +52,9 @@ public abstract class SimpleHttpClient {
public static final String LF = "\n";
public static final String CRLF = CR + LF;
+ public static final String HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING =
+ "Content-Type: " + Globals.CONTENT_TYPE_FORM_URL_ENCODING + CRLF;
+
public static final String INFO_100 = "HTTP/1.1 100 ";
public static final String OK_200 = "HTTP/1.1 200 ";
public static final String CREATED_201 = "HTTP/1.1 201 ";
diff --git a/test/org/apache/coyote/ajp/TestAbstractAjpProcessor.java
b/test/org/apache/coyote/ajp/TestAbstractAjpProcessor.java
index f76deae16f..65bfb28b5a 100644
--- a/test/org/apache/coyote/ajp/TestAbstractAjpProcessor.java
+++ b/test/org/apache/coyote/ajp/TestAbstractAjpProcessor.java
@@ -37,6 +37,7 @@ import org.junit.Before;
import org.junit.Test;
import org.apache.catalina.Context;
+import org.apache.catalina.Globals;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.startup.TomcatBaseTest;
@@ -638,7 +639,7 @@ public class TestAbstractAjpProcessor extends
TomcatBaseTest {
if (multipleCL) {
forwardMessage.addHeader(0xA008, "99");
}
- forwardMessage.addHeader(0xA007, "application/x-www-form-urlencoded");
+ forwardMessage.addHeader(0xA007,
Globals.CONTENT_TYPE_FORM_URL_ENCODING);
forwardMessage.end();
TesterAjpMessage bodyMessage =
ajpClient.createBodyMessage("test=data".getBytes());
diff --git a/test/org/apache/coyote/http11/TestHttp11Processor.java
b/test/org/apache/coyote/http11/TestHttp11Processor.java
index 0d8a9d766c..09ff561a1e 100644
--- a/test/org/apache/coyote/http11/TestHttp11Processor.java
+++ b/test/org/apache/coyote/http11/TestHttp11Processor.java
@@ -166,7 +166,7 @@ public class TestHttp11Processor extends TomcatBaseTest {
String request = "POST /echo-params.jsp HTTP/1.1" +
SimpleHttpClient.CRLF + "Host: any" +
SimpleHttpClient.CRLF + "Transfer-encoding: void" +
SimpleHttpClient.CRLF + "Content-Length: 9" +
- SimpleHttpClient.CRLF + "Content-Type:
application/x-www-form-urlencoded" + SimpleHttpClient.CRLF +
+ SimpleHttpClient.CRLF +
SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
SimpleHttpClient.CRLF + "test=data";
Client client = new Client(getPort());
@@ -184,7 +184,7 @@ public class TestHttp11Processor extends TomcatBaseTest {
String request = "POST /echo-params.jsp HTTP/1.1" +
SimpleHttpClient.CRLF + "Host: any" +
SimpleHttpClient.CRLF + "Transfer-encoding: buffered" +
SimpleHttpClient.CRLF + "Content-Length: 9" +
- SimpleHttpClient.CRLF + "Content-Type:
application/x-www-form-urlencoded" + SimpleHttpClient.CRLF +
+ SimpleHttpClient.CRLF +
SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
SimpleHttpClient.CRLF + "test=data";
Client client = new Client(getPort());
@@ -216,7 +216,7 @@ public class TestHttp11Processor extends TomcatBaseTest {
String request = "POST /test/echo-params.jsp HTTP/1.1" +
SimpleHttpClient.CRLF + "Host: any" +
SimpleHttpClient.CRLF + (withCL ? "Content-length: 1" +
SimpleHttpClient.CRLF : "") +
"Transfer-encoding: chunked" + SimpleHttpClient.CRLF +
- "Content-Type: application/x-www-form-urlencoded" +
SimpleHttpClient.CRLF + "Connection: close" +
+ SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
"Connection: close" +
SimpleHttpClient.CRLF + SimpleHttpClient.CRLF + "9" +
SimpleHttpClient.CRLF + "test=data" +
SimpleHttpClient.CRLF + "0" + SimpleHttpClient.CRLF +
SimpleHttpClient.CRLF;
@@ -236,8 +236,8 @@ public class TestHttp11Processor extends TomcatBaseTest {
String request = "POST /echo-params.jsp HTTP/1.1" +
SimpleHttpClient.CRLF + "Host: any" +
SimpleHttpClient.CRLF + "Transfer-encoding: savedrequest" +
SimpleHttpClient.CRLF +
- "Content-Length: 9" + SimpleHttpClient.CRLF + "Content-Type:
application/x-www-form-urlencoded" +
- SimpleHttpClient.CRLF + SimpleHttpClient.CRLF + "test=data";
+ "Content-Length: 9" + SimpleHttpClient.CRLF +
+ SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
SimpleHttpClient.CRLF + "test=data";
Client client = new Client(getPort());
client.setRequest(new String[] { request });
@@ -254,7 +254,7 @@ public class TestHttp11Processor extends TomcatBaseTest {
String request = "POST /echo-params.jsp HTTP/1.1" +
SimpleHttpClient.CRLF + "Host: any" +
SimpleHttpClient.CRLF + "Transfer-encoding: unsupported" +
SimpleHttpClient.CRLF + "Content-Length: 9" +
- SimpleHttpClient.CRLF + "Content-Type:
application/x-www-form-urlencoded" + SimpleHttpClient.CRLF +
+ SimpleHttpClient.CRLF +
SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
SimpleHttpClient.CRLF + "test=data";
Client client = new Client(getPort());
@@ -1837,7 +1837,7 @@ public class TestHttp11Processor extends TomcatBaseTest {
String request = "POST /test/echo-params.jsp HTTP/1.0" +
SimpleHttpClient.CRLF + "Host: any" +
SimpleHttpClient.CRLF + "Transfer-encoding: chunked" +
SimpleHttpClient.CRLF +
- "Content-Type: application/x-www-form-urlencoded" +
SimpleHttpClient.CRLF + "Connection: close" +
+ SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
"Connection: close" +
SimpleHttpClient.CRLF + SimpleHttpClient.CRLF + "9" +
SimpleHttpClient.CRLF + "test=data" +
SimpleHttpClient.CRLF + "0" + SimpleHttpClient.CRLF +
SimpleHttpClient.CRLF;
diff --git a/test/org/apache/coyote/http11/filters/TestChunkedInputFilter.java
b/test/org/apache/coyote/http11/filters/TestChunkedInputFilter.java
index 5bb587d620..c1866d9634 100644
--- a/test/org/apache/coyote/http11/filters/TestChunkedInputFilter.java
+++ b/test/org/apache/coyote/http11/filters/TestChunkedInputFilter.java
@@ -116,8 +116,7 @@ public class TestChunkedInputFilter extends TomcatBaseTest {
"POST /echo-params.jsp HTTP/1.1" + SimpleHttpClient.CRLF +
"Host: any" + SimpleHttpClient.CRLF +
"Transfer-encoding: chunked" + SimpleHttpClient.CRLF +
- "Content-Type: application/x-www-form-urlencoded" +
- SimpleHttpClient.CRLF +
+ SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
"Connection: close" + SimpleHttpClient.CRLF +
SimpleHttpClient.CRLF +
"3" + (chunkHeaderUsesCRLF ? SimpleHttpClient.CRLF :
SimpleHttpClient.LF) +
@@ -192,7 +191,7 @@ public class TestChunkedInputFilter extends TomcatBaseTest {
"POST /echo-params.jsp HTTP/1.1" + SimpleHttpClient.CRLF +
"Host: any" + SimpleHttpClient.CRLF +
"Transfer-encoding: chunked" + SimpleHttpClient.CRLF +
- "Content-Type: application/x-www-form-urlencoded" +
SimpleHttpClient.CRLF +
+ SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
"Connection: close" + SimpleHttpClient.CRLF +
SimpleHttpClient.CRLF +
"3" + SimpleHttpClient.CRLF +
@@ -226,7 +225,7 @@ public class TestChunkedInputFilter extends TomcatBaseTest {
"POST /echo-params.jsp HTTP/1.1" + SimpleHttpClient.CRLF +
"Host: any" + SimpleHttpClient.CRLF +
"Transfer-encoding: chunked" + SimpleHttpClient.CRLF +
- "Content-Type: application/x-www-form-urlencoded" +
SimpleHttpClient.CRLF +
+ SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
"Connection: close" + SimpleHttpClient.CRLF +
SimpleHttpClient.CRLF +
"3" + SimpleHttpClient.CRLF +
@@ -294,8 +293,7 @@ public class TestChunkedInputFilter extends TomcatBaseTest {
"POST /echo-params.jsp HTTP/1.1" + SimpleHttpClient.CRLF +
"Host: any" + SimpleHttpClient.CRLF +
"Transfer-encoding: chunked" + SimpleHttpClient.CRLF +
- "Content-Type: application/x-www-form-urlencoded" +
- SimpleHttpClient.CRLF +
+ SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
"Connection: close" + SimpleHttpClient.CRLF +
SimpleHttpClient.CRLF +
"3" + extName + extValue.toString() + SimpleHttpClient.CRLF +
@@ -336,8 +334,7 @@ public class TestChunkedInputFilter extends TomcatBaseTest {
"POST /echo-params.jsp HTTP/1.1" + SimpleHttpClient.CRLF +
"Host: any" + SimpleHttpClient.CRLF +
"Transfer-encoding: chunked" + SimpleHttpClient.CRLF +
- "Content-Type: application/x-www-form-urlencoded" +
- SimpleHttpClient.CRLF +
+ SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
"Connection: close" + SimpleHttpClient.CRLF +
SimpleHttpClient.CRLF +
"3" + SimpleHttpClient.CRLF +
@@ -507,7 +504,7 @@ public class TestChunkedInputFilter extends TomcatBaseTest {
"POST / HTTP/1.1" + SimpleHttpClient.CRLF +
"Host: localhost" + SimpleHttpClient.CRLF +
"Transfer-encoding: chunked" + SimpleHttpClient.CRLF +
- "Content-Type: application/x-www-form-urlencoded" +
SimpleHttpClient.CRLF +
+ SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
"Connection: close" + SimpleHttpClient.CRLF +
SimpleHttpClient.CRLF +
"3" + SimpleHttpClient.CRLF +
@@ -851,7 +848,7 @@ public class TestChunkedInputFilter extends TomcatBaseTest {
"POST /test HTTP/1.1" + SimpleHttpClient.CRLF +
"Host: any" + SimpleHttpClient.CRLF +
"Transfer-encoding: chunked" + SimpleHttpClient.CRLF +
- "Content-Type: application/x-www-form-urlencoded" +
SimpleHttpClient.CRLF +
+ SimpleHttpClient.HTTP_HEADER_CONTENT_TYPE_FORM_URL_ENCODING +
"Connection: close" + SimpleHttpClient.CRLF +
SimpleHttpClient.CRLF +
"7" + SimpleHttpClient.CRLF +
diff --git a/test/org/apache/coyote/http2/Http2TestBase.java
b/test/org/apache/coyote/http2/Http2TestBase.java
index e9d3a5de81..606fef11d8 100644
--- a/test/org/apache/coyote/http2/Http2TestBase.java
+++ b/test/org/apache/coyote/http2/Http2TestBase.java
@@ -51,6 +51,7 @@ import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
import org.apache.catalina.Context;
+import org.apache.catalina.Globals;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Tomcat;
@@ -347,7 +348,7 @@ public abstract class Http2TestBase extends TomcatBaseTest {
byte[] dataFrameHeader = new byte[9];
ByteBuffer dataPayload = ByteBuffer.allocate(128);
- buildPostRequest(headersFrameHeader, headersPayload, useExpectation,
"application/x-www-form-urlencoded",
+ buildPostRequest(headersFrameHeader, headersPayload, useExpectation,
Globals.CONTENT_TYPE_FORM_URL_ENCODING,
contentLength, "/parameter", dataFrameHeader, dataPayload,
padding, false, streamId);
writeFrame(headersFrameHeader, headersPayload);
if (body != null) {
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 71f002fa0a..4f71713bac 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -178,6 +178,11 @@
than error level as they are very likely to have been caused by a
client
disconnection or similar I/O issue. (markt)
</fix>
+ <add>
+ Add a test case for the fix for <bug>69442</bug>. Also refactor
+ references to <code>application/x-www-form-urlencoded</code>. Based on
+ pull request <pr>779</pr> by Chenjp. (markt)
+ </add>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]