billbarker    2003/07/05 23:16:00

  Modified:    http11/src/java/org/apache/coyote/http11
                        Http11Processor.java
  Log:
  Re-activate dropping the connection on serious protocol errors.
  
  Also adding Remy's suggestion to check the exception, as well as checking the status 
code in the commit so that we can be nice enough to tell the client that we're not 
talking to them anymore if we discover the error soon enough.
  
  Revision  Changes    Path
  1.70      +13 -3     
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.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- Http11Processor.java      5 Jul 2003 01:39:42 -0000       1.69
  +++ Http11Processor.java      6 Jul 2003 06:16:00 -0000       1.70
  @@ -635,9 +635,16 @@
                       thrA.setCurrentStage(threadPool, "service");
                       rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
                       adapter.service(request, response);
  -                  /* Mimic httpd (currently disabled)
  -                    error = statusDropsConnection(response.getStatus());
  -                  */
  +                    // Handle when the response was committed before a serious
  +                    // error occurred.  Throwing a ServletException should both
  +                    // set the status to 500 and set the errorException.
  +                    // If we fail here, then the response is likely already 
  +                    // committed, so we can't try and set headers.
  +                    if(keepAlive && !error) { // Avoid checking twice.
  +                        error = response.getErrorException() != null ||
  +                                statusDropsConnection(response.getStatus());
  +                    }
  +
                   } catch (InterruptedIOException e) {
                       error = true;
                   } catch (Throwable t) {
  @@ -1260,6 +1267,9 @@
               keepAlive = false;
           }
   
  +        // If we know that the request is bad this early, add the
  +        // Connection: close header.
  +        keepAlive = keepAlive && statusDropsConnection(statusCode);
           if (!keepAlive) {
               response.addHeader("Connection", "close");
           } else if (!http11) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to