Author: markt
Date: Tue Nov 23 21:45:56 2010
New Revision: 1038351

URL: http://svn.apache.org/viewvc?rev=1038351&view=rev
Log:
Move configuration of trailer header size limit to the connector

Modified:
    tomcat/trunk/java/org/apache/coyote/Constants.java
    tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
    tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java
    tomcat/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java
    
tomcat/trunk/test/org/apache/coyote/http11/filters/TestChunkedInputFilter.java
    tomcat/trunk/webapps/docs/config/http.xml
    tomcat/trunk/webapps/docs/config/systemprops.xml

Modified: tomcat/trunk/java/org/apache/coyote/Constants.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/Constants.java?rev=1038351&r1=1038350&r2=1038351&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/Constants.java (original)
+++ tomcat/trunk/java/org/apache/coyote/Constants.java Tue Nov 23 21:45:56 2010
@@ -67,14 +67,5 @@ public final class Constants {
     public static final boolean USE_CUSTOM_STATUS_MSG_IN_HEADER =
         Boolean.valueOf(System.getProperty(
                 "org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER",
-                "false")).booleanValue(); 
-
-    /**
-     * Limit on the total length of the trailer headers in
-     * a chunked HTTP request.
-     */
-    public static final int MAX_TRAILER_SIZE =
-        Integer.parseInt(System.getProperty(
-                "org.apache.coyote.MAX_TRAILER_SIZE",
-                "8192"));
+                "false")).booleanValue();
 }

Modified: 
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1038351&r1=1038350&r2=1038351&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Tue 
Nov 23 21:45:56 2010
@@ -771,13 +771,13 @@ public abstract class AbstractHttp11Proc
     /**
      * Initialize standard input and output filters.
      */
-    protected void initializeFilters() {
+    protected void initializeFilters(int maxTrailerSize) {
         // Create and add the identity filters.
         getInputBuffer().addFilter(new IdentityInputFilter());
         getOutputBuffer().addFilter(new IdentityOutputFilter());
 
         // Create and add the chunked filters.
-        getInputBuffer().addFilter(new ChunkedInputFilter());
+        getInputBuffer().addFilter(new ChunkedInputFilter(maxTrailerSize));
         getOutputBuffer().addFilter(new ChunkedOutputFilter());
 
         // Create and add the void filters.

Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java?rev=1038351&r1=1038350&r2=1038351&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java Tue 
Nov 23 21:45:56 2010
@@ -332,6 +332,16 @@ public abstract class AbstractHttp11Prot
     public void setServer( String server ) { this.server = server; }
     public String getServer() { return server; }
     
+    // HTTP
+    /**
+     * Maximum size of trailing headers in bytes
+     */
+    private int maxTrailerSize = 8192;
+    public int getMaxTrailerSize() { return maxTrailerSize; }
+    public void setMaxTrailerSize(int maxTrailerSize) {
+        this.maxTrailerSize = maxTrailerSize;
+    }
+
     @Override
     public Executor getExecutor() { return endpoint.getExecutor(); }
     public void setExecutor(Executor executor) { 
endpoint.setExecutor(executor); }

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=1038351&r1=1038350&r2=1038351&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Tue Nov 
23 21:45:56 2010
@@ -66,7 +66,8 @@ public class Http11AprProcessor extends 
     // ----------------------------------------------------------- Constructors
 
 
-    public Http11AprProcessor(int headerBufferSize, AprEndpoint endpoint) {
+    public Http11AprProcessor(int headerBufferSize, AprEndpoint endpoint,
+            int maxTrailerSize) {
 
         this.endpoint = endpoint;
         
@@ -82,7 +83,7 @@ public class Http11AprProcessor extends 
         
         ssl = endpoint.isSSLEnabled();
 
-        initializeFilters();
+        initializeFilters(maxTrailerSize);
 
         // Cause loading of HexUtils
         HexUtils.load();

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java?rev=1038351&r1=1038350&r2=1038351&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java Tue Nov 
23 21:45:56 2010
@@ -433,7 +433,8 @@ public class Http11AprProtocol extends A
 
         protected Http11AprProcessor createProcessor() {
             Http11AprProcessor processor = new Http11AprProcessor(
-                    proto.getMaxHttpHeaderSize(), (AprEndpoint)proto.endpoint);
+                    proto.getMaxHttpHeaderSize(), (AprEndpoint)proto.endpoint,
+                    proto.getMaxTrailerSize());
             processor.setAdapter(proto.adapter);
             processor.setMaxKeepAliveRequests(proto.getMaxKeepAliveRequests());
             processor.setTimeout(proto.timeout);

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=1038351&r1=1038350&r2=1038351&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Tue Nov 
23 21:45:56 2010
@@ -68,7 +68,8 @@ public class Http11NioProcessor extends 
     // ----------------------------------------------------------- Constructors
 
 
-    public Http11NioProcessor(int maxHttpHeaderSize, NioEndpoint endpoint) {
+    public Http11NioProcessor(int maxHttpHeaderSize, NioEndpoint endpoint,
+            int maxTrailerSize) {
 
         this.endpoint = endpoint;
 
@@ -84,7 +85,7 @@ public class Http11NioProcessor extends 
 
         ssl = endpoint.isSSLEnabled();
 
-        initializeFilters();
+        initializeFilters(maxTrailerSize);
 
         // Cause loading of HexUtils
         HexUtils.load();

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java?rev=1038351&r1=1038350&r2=1038351&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java Tue Nov 
23 21:45:56 2010
@@ -433,8 +433,8 @@ public class Http11NioProtocol extends A
 
         public Http11NioProcessor createProcessor() {
             Http11NioProcessor processor = new Http11NioProcessor(
-              proto.getMaxHttpHeaderSize(),
-              (NioEndpoint)proto.endpoint);
+                    proto.getMaxHttpHeaderSize(), (NioEndpoint)proto.endpoint,
+                    proto.getMaxTrailerSize());
             processor.setAdapter(proto.adapter);
             processor.setMaxKeepAliveRequests(proto.getMaxKeepAliveRequests());
             processor.setTimeout(proto.getTimeout());

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=1038351&r1=1038350&r2=1038351&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Tue Nov 23 
21:45:56 2010
@@ -61,7 +61,8 @@ public class Http11Processor extends Abs
    // ------------------------------------------------------------ Constructor
 
 
-    public Http11Processor(int headerBufferSize, JIoEndpoint endpoint) {
+    public Http11Processor(int headerBufferSize, JIoEndpoint endpoint,
+            int maxTrailerSize) {
 
         this.endpoint = endpoint;
         
@@ -75,7 +76,7 @@ public class Http11Processor extends Abs
         response.setOutputBuffer(outputBuffer);
         request.setResponse(response);
 
-        initializeFilters();
+        initializeFilters(maxTrailerSize);
 
         // Cause loading of HexUtils
         HexUtils.load();

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java?rev=1038351&r1=1038350&r2=1038351&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java Tue Nov 23 
21:45:56 2010
@@ -293,8 +293,9 @@ public class Http11Protocol extends Abst
         }
         
         protected Http11Processor createProcessor() {
-            Http11Processor processor =
-                new Http11Processor(proto.getMaxHttpHeaderSize(), 
(JIoEndpoint)proto.endpoint);
+            Http11Processor processor = new Http11Processor(
+                    proto.getMaxHttpHeaderSize(), (JIoEndpoint)proto.endpoint,
+                    proto.getMaxTrailerSize());
             processor.setAdapter(proto.adapter);
             processor.setMaxKeepAliveRequests(proto.getMaxKeepAliveRequests());
             processor.setKeepAliveTimeout(proto.getKeepAliveTimeout());

Modified: 
tomcat/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java?rev=1038351&r1=1038350&r2=1038351&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java 
Tue Nov 23 21:45:56 2010
@@ -102,15 +102,7 @@ public class ChunkedInputFilter implemen
     /**
      * Byte chunk used to store trailing headers.
      */
-    protected ByteChunk trailingHeaders;
-
-    {
-        trailingHeaders = new ByteChunk();
-        if (org.apache.coyote.Constants.MAX_TRAILER_SIZE > 0) {
-            
trailingHeaders.setLimit(org.apache.coyote.Constants.MAX_TRAILER_SIZE);
-        }
-    }
-
+    protected ByteChunk trailingHeaders = new ByteChunk();
 
     /**
      * Flag set to true if the next call to doRead() must parse a CRLF pair
@@ -124,8 +116,10 @@ public class ChunkedInputFilter implemen
      */
     private Request request;
     
-    // ------------------------------------------------------------- Properties
-
+    // ----------------------------------------------------------- Constructors
+    public ChunkedInputFilter(int maxTrailerSize) {
+        this.trailingHeaders.setLimit(maxTrailerSize);
+    }
 
     // ---------------------------------------------------- InputBuffer Methods
 

Modified: 
tomcat/trunk/test/org/apache/coyote/http11/filters/TestChunkedInputFilter.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/coyote/http11/filters/TestChunkedInputFilter.java?rev=1038351&r1=1038350&r2=1038351&view=diff
==============================================================================
--- 
tomcat/trunk/test/org/apache/coyote/http11/filters/TestChunkedInputFilter.java 
(original)
+++ 
tomcat/trunk/test/org/apache/coyote/http11/filters/TestChunkedInputFilter.java 
Tue Nov 23 21:45:56 2010
@@ -82,13 +82,10 @@ public class TestChunkedInputFilter exte
         Tomcat.addServlet(ctx, "servlet", new EchoHeaderServlet());
         ctx.addServletMapping("/", "servlet");
 
+        // Limit the size of the trailing header
+        tomcat.getConnector().setProperty("maxTrailerSize", "10");
         tomcat.start();
 
-        StringBuilder longText = new StringBuilder("Test1234567890");
-        while (longText.length() <= 8192) {
-            longText.append(longText.toString());
-        }
-
         String[] request = new String[]{
             "POST /echo-params.jsp HTTP/1.1" + SimpleHttpClient.CRLF +
             "Host: any" + SimpleHttpClient.CRLF +
@@ -102,7 +99,7 @@ public class TestChunkedInputFilter exte
             "4" + SimpleHttpClient.CRLF +
             "&b=1" + SimpleHttpClient.CRLF +
             "0" + SimpleHttpClient.CRLF +
-            "x-trailer: Test" + longText + SimpleHttpClient.CRLF +
+            "x-trailer: Test" + SimpleHttpClient.CRLF +
             SimpleHttpClient.CRLF };
 
         TrailerClient client = new TrailerClient();

Modified: tomcat/trunk/webapps/docs/config/http.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/http.xml?rev=1038351&r1=1038350&r2=1038351&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/http.xml (original)
+++ tomcat/trunk/webapps/docs/config/http.xml Tue Nov 23 21:45:56 2010
@@ -335,6 +335,13 @@
       execute tasks using the executor rather than an internal thread pool.</p>
     </attribute>
 
+    <attribute name="maxTrailerSize">
+      <p>Limits the total length of trailing headers in the last chunk of
+      a chunked HTTP request. If the value is <code>-1</code>, no limit will be
+      imposed. If not specified, the default value of <code>8192</code> will be
+      used.</p>
+    </attribute>
+
     <attribute name="minSpareThreads" required="false">
       <p>The minimum number of threads always kept running. If not specified,
       the default of <code>10</code> is used.</p>

Modified: tomcat/trunk/webapps/docs/config/systemprops.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/systemprops.xml?rev=1038351&r1=1038350&r2=1038351&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/systemprops.xml (original)
+++ tomcat/trunk/webapps/docs/config/systemprops.xml Tue Nov 23 21:45:56 2010
@@ -474,13 +474,6 @@
       <p>If not specified, the default value of <code>false</code> will be 
used.</p>
     </property>
 
-    <property name="org.apache.coyote.MAX_TRAILER_SIZE">
-      <p>Limits the total length of trailing headers in the last chunk of
-      a chunked HTTP request.
-      If the value is <code>-1</code>, no limit will be imposed.</p>
-      <p>If not specified, the default value of <code>8192</code> will be 
used.</p>
-    </property>
-
     <property name="catalina.useNaming">
       <p>If this is <code>false</code> it will override the
       <code>useNaming</code> attribute for all <a href="context.html">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to