You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2011/11/01 20:17:39 UTC

svn commit: r1196223 - in /tomcat/trunk/java/org/apache/coyote/http11: InternalAprInputBuffer.java InternalInputBuffer.java InternalNioInputBuffer.java

Author: kkolinko
Date: Tue Nov  1 19:17:39 2011
New Revision: 1196223

URL: http://svn.apache.org/viewvc?rev=1196223&view=rev
Log:
Alternative implementation for r1196212 that covers all HTTP connectors.
Self-guard against unexpected call to parseHeaders() after the parsing has already been completed
without a prior call to recycle() or nextRequest().

There is already a flag variable (parsingHeader), so no need for additional state in InternalNioInputBuffer.

Modified:
    tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java
    tomcat/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java
    tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java

Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java?rev=1196223&r1=1196222&r2=1196223&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java Tue Nov  1 19:17:39 2011
@@ -304,6 +304,10 @@ public class InternalAprInputBuffer exte
     @Override
     public boolean parseHeaders()
         throws IOException {
+        if (!parsingHeader) {
+            throw new IllegalStateException(
+                    sm.getString("iib.parseheaders.ise.error"));
+        }
 
         while (parseHeader()) {
             // Loop until there are no more headers

Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java?rev=1196223&r1=1196222&r2=1196223&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java Tue Nov  1 19:17:39 2011
@@ -260,6 +260,10 @@ public class InternalInputBuffer extends
     @Override
     public boolean parseHeaders()
         throws IOException {
+        if (!parsingHeader) {
+            throw new IllegalStateException(
+                    sm.getString("iib.parseheaders.ise.error"));
+        }
 
         while (parseHeader()) {
             // Loop until we run out of headers

Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java?rev=1196223&r1=1196222&r2=1196223&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Tue Nov  1 19:17:39 2011
@@ -88,11 +88,7 @@ public class InternalNioInputBuffer exte
         /**
          * Reading all bytes until the next CRLF. The line is being ignored.
          */
-        HEADER_SKIPLINE,
-        /**
-         * Done parsing headers. Request body should follow.
-         */
-        HEADERS_DONE
+        HEADER_SKIPLINE
     }
 
     // ----------------------------------------------------------- Constructors
@@ -473,7 +469,7 @@ public class InternalNioInputBuffer exte
     @Override
     public boolean parseHeaders()
         throws IOException {
-        if (headerParsePos == HeaderParsePosition.HEADERS_DONE) {
+        if (!parsingHeader) {
             throw new IllegalStateException(
                     sm.getString("iib.parseheaders.ise.error"));
         }
@@ -536,7 +532,6 @@ public class InternalNioInputBuffer exte
                 // Skip
             } else if (chr == Constants.LF) {
                 pos++;
-                headerParsePos = HeaderParsePosition.HEADERS_DONE;
                 return HeaderParseStatus.DONE;
             } else {
                 break;



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