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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to