remm 02/03/08 20:39:21
Modified: http11/src/java/org/apache/coyote/http11
Http11Processor.java
Log:
- Fixes problems with requests having a content-length of 0.
- Fixes problems with HTTP/1.1 requests without a content-length (although
this may not be totally legal).
Revision Changes Path
1.4 +15 -12
jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11Processor.java
Index: Http11Processor.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11Processor.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Http11Processor.java 8 Mar 2002 23:47:19 -0000 1.3
+++ Http11Processor.java 9 Mar 2002 04:39:21 -0000 1.4
@@ -271,13 +271,9 @@
// Check for HTTP/0.9
inputBuffer.parseHeaders();
- } catch (EOFException e) {
+ } catch (IOException e) {
error = true;
break;
- } catch (InterruptedIOException e) {
- e.printStackTrace();
- //HttpServletResponse.SC_BAD_REQUEST
- error = true;
} catch (Exception e) {
e.printStackTrace();
//SC_BAD_REQUEST
@@ -291,7 +287,6 @@
try {
adapter.service(request, response);
} catch (InterruptedIOException e) {
- e.printStackTrace();
error = true;
} catch (Throwable t) {
// ISE
@@ -303,7 +298,6 @@
try {
inputBuffer.endRequest();
} catch (IOException e) {
- e.printStackTrace();
error = true;
} catch (Throwable t) {
// Problem ...
@@ -313,7 +307,6 @@
try {
outputBuffer.endRequest();
} catch (IOException e) {
- e.printStackTrace();
error = true;
} catch (Throwable t) {
// Problem ...
@@ -505,10 +498,15 @@
// Parse content-length header
int contentLength = request.getContentLength();
- if (contentLength != -1) {
+ if (contentLength > 0) {
inputBuffer.addActiveFilter
(inputFilters[Constants.IDENTITY_FILTER]);
contentDelimitation = true;
+ } else if (contentLength == 0) {
+ // No content to read
+ inputBuffer.addActiveFilter
+ (inputFilters[Constants.VOID_FILTER]);
+ contentDelimitation = true;
}
// Parse transfer-encoding header
@@ -552,10 +550,15 @@
}
if (!contentDelimitation) {
+ /*
// If method is GET or HEAD, prevent from reading any content
- if ((methodMB.equals("GET"))
- || (methodMB.equals("HEAD"))
- || (methodMB.equals("TRACE"))) {
+ if ((methodMB.equals("GET"))
+ || (methodMB.equals("HEAD"))
+ || (methodMB.equals("TRACE"))) {
+ */
+ // If there's no content length and we're using HTTP/1.1, assume
+ // the client is not broken and didn't send a body
+ if (http11) {
inputBuffer.addActiveFilter
(inputFilters[Constants.VOID_FILTER]);
contentDelimitation = true;
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>