Author: markt
Date: Mon Jun 16 19:58:56 2014
New Revision: 1602984
URL: http://svn.apache.org/r1602984
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56620
More general fix for incorrect request start times.
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1602956
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1602984&r1=1602983&r2=1602984&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
Mon Jun 16 19:58:56 2014
@@ -991,12 +991,6 @@ public abstract class AbstractHttp11Proc
response.setStatus(503);
setErrorState(ErrorState.CLOSE_CLEAN, null);
} else {
- // Make sure that connectors that are non-blocking during
- // header processing (NIO) only set the start time the
first
- // time a request is processed.
- if (request.getStartTime() < 0) {
- request.setStartTime(System.currentTimeMillis());
- }
keptAlive = true;
// Set this every time in case limit has been changed via
JMX
request.getMimeHeaders().setLimit(endpoint.getMaxHeaderCount());
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java?rev=1602984&r1=1602983&r2=1602984&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java
Mon Jun 16 19:58:56 2014
@@ -225,6 +225,10 @@ public abstract class AbstractInputBuffe
}
+ /**
+ * Implementations are expected to call {@link Request#setStartTime(long)}
+ * as soon as the first byte is read from the request.
+ */
public abstract boolean parseRequestLine(boolean useAvailableDataOnly)
throws IOException;
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=1602984&r1=1602983&r2=1602984&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
Mon Jun 16 19:58:56 2014
@@ -224,10 +224,6 @@ public class Http11NioProcessor extends
socketWrapper.setTimeout(endpoint.getKeepAliveTimeout());
}
} else {
- // Started to read request line.
- if (request.getStartTime() < 0) {
- request.setStartTime(System.currentTimeMillis());
- }
if (endpoint.isPaused()) {
// Partially processed the request so need to respond
response.setStatus(503);
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java?rev=1602984&r1=1602983&r2=1602984&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java
Mon Jun 16 19:58:56 2014
@@ -134,9 +134,12 @@ public class InternalAprInputBuffer exte
if (!fill())
throw new EOFException(sm.getString("iib.eof.error"));
}
-
+ // Set the start time once we start reading data (even if it is
+ // just skipping blank lines)
+ if (request.getStartTime() < 0) {
+ request.setStartTime(System.currentTimeMillis());
+ }
chr = buf[pos++];
-
} while ((chr == Constants.CR) || (chr == Constants.LF));
pos--;
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java?rev=1602984&r1=1602983&r2=1602984&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java
Mon Jun 16 19:58:56 2014
@@ -98,9 +98,12 @@ public class InternalInputBuffer extends
if (!fill())
throw new EOFException(sm.getString("iib.eof.error"));
}
-
+ // Set the start time once we start reading data (even if it is
+ // just skipping blank lines)
+ if (request.getStartTime() < 0) {
+ request.setStartTime(System.currentTimeMillis());
+ }
chr = buf[pos++];
-
} while ((chr == Constants.CR) || (chr == Constants.LF));
pos--;
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java?rev=1602984&r1=1602983&r2=1602984&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java
Mon Jun 16 19:58:56 2014
@@ -228,6 +228,11 @@ public class InternalNioInputBuffer exte
return false;
}
}
+ // Set the start time once we start reading data (even if it is
+ // just skipping blank lines)
+ if (request.getStartTime() < 0) {
+ request.setStartTime(System.currentTimeMillis());
+ }
chr = buf[pos++];
} while ((chr == Constants.CR) || (chr == Constants.LF));
pos--;
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1602984&r1=1602983&r2=1602984&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Mon Jun 16 19:58:56 2014
@@ -139,7 +139,8 @@
</fix>
<fix>
<bug>56620</bug>: Avoid bogus access log entries when pausing the NIO
- HTTP connector. (markt)
+ HTTP connector and ensure that access log entries generated by error
+ conditions use the correct request start time. (markt)
</fix>
</changelog>
</subsection>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]