Author: kkolinko Date: Mon Jul 2 13:01:28 2012 New Revision: 1356208 URL: http://svn.apache.org/viewvc?rev=1356208&view=rev Log: Improve InternalNioInputBuffer#parseHeaders() Move the code and s/end/pos/
It is backport of r1350294 from trunk (r1350301 in Tomcat 7). Modified: tomcat/tc6.0.x/trunk/ (props changed) tomcat/tc6.0.x/trunk/STATUS.txt tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc6.0.x/trunk/ ------------------------------------------------------------------------------ Merged /tomcat/trunk:r1350294 Modified: tomcat/tc6.0.x/trunk/STATUS.txt URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=1356208&r1=1356207&r2=1356208&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/STATUS.txt (original) +++ tomcat/tc6.0.x/trunk/STATUS.txt Mon Jul 2 13:01:28 2012 @@ -144,12 +144,6 @@ PATCHES PROPOSED TO BACKPORT: +1: markt, kfujino -1: -* Improve InternalNioInputBuffer.parseHeaders() - http://svn.apache.org/viewvc?view=revision&revision=1350294 - (r1350301 in Tomcat 7) - +1: kkolinko, markt, kfujino - -1: - * Implement maxHeaderCount attribute on Connector. It is equivalent of LimitRequestFields directive of Apache HTTPD (backport of r1350295) Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java?rev=1356208&r1=1356207&r2=1356208&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Mon Jul 2 13:01:28 2012 @@ -673,10 +673,6 @@ public class InternalNioInputBuffer impl do { status = parseHeader(); - } while ( status == HeaderParseStatus.HAVE_MORE_HEADERS ); - if (status == HeaderParseStatus.DONE) { - parsingHeader = false; - end = pos; // Checking that // (1) Headers plus request line size does not exceed its limit // (2) There are enough bytes to avoid expanding the buffer when @@ -685,11 +681,15 @@ public class InternalNioInputBuffer impl // limitation to enforce the meaning of headerBufferSize // From the way how buf is allocated and how blank lines are being // read, it should be enough to check (1) only. - if (end - skipBlankLinesBytes > headerBufferSize - || buf.length - end < socketReadBufferSize) { + if (pos - skipBlankLinesBytes > headerBufferSize + || buf.length - pos < socketReadBufferSize) { throw new IllegalArgumentException( sm.getString("iib.requestheadertoolarge.error")); } + } while ( status == HeaderParseStatus.HAVE_MORE_HEADERS ); + if (status == HeaderParseStatus.DONE) { + parsingHeader = false; + end = pos; return true; } else { return false; Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=1356208&r1=1356207&r2=1356208&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Mon Jul 2 13:01:28 2012 @@ -183,6 +183,9 @@ client disconnects before the response has been fully written from an AJP connection using the APR/native connector. (kkolinko) </fix> + <fix> + Improve <code>InternalNioInputBuffer.parseHeaders()</code>. (kkolinko) + </fix> </changelog> </subsection> <subsection name="Jasper"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org