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]

Reply via email to