larryi      02/02/08 04:43:58

  Modified:    src/share/org/apache/tomcat/modules/server
                        Http10Interceptor.java
  Log:
  Move delay to the proper location as suggested by Bill Barker.  Make the
  attribute a number again so the length of the delay may be specified.
  
  Revision  Changes    Path
  1.33      +15 -13    
jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Http10Interceptor.java
  
  Index: Http10Interceptor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Http10Interceptor.java,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- Http10Interceptor.java    5 Feb 2002 01:34:02 -0000       1.32
  +++ Http10Interceptor.java    8 Feb 2002 12:43:58 -0000       1.33
  @@ -100,7 +100,7 @@
   {
       private int      timeout = 300000;       // 5 minutes as in Apache HTTPD server
       private String reportedname;
  -    private boolean delaySocketClose = false;
  +    private int socketCloseDelay=-1;
   
       public Http10Interceptor() {
        super();
  @@ -123,8 +123,8 @@
       reportedname = reportedName;
       }
   
  -    public void setDelaySocketClose(boolean b) {
  -        delaySocketClose=b;
  +    public void setSocketCloseDelay( int d ) {
  +        socketCloseDelay=d;
       }
   
       public void setProperty( String prop, String value ) {
  @@ -175,6 +175,18 @@
            
            cm.service( reqA, resA );
   
  +            // If unread input arrives after the shutdownInput() call
  +            // below and before or during the socket.close(), an error
  +            // may be reported to the client.  To help troubleshoot this
  +            // type of error, provide a configurable delay to give the
  +            // unread input time to arrive so it can be successfully read
  +            // and discarded by shutdownInput().
  +            if( socketCloseDelay >= 0 ) {
  +                try {
  +                    Thread.sleep(socketCloseDelay);
  +                } catch (InterruptedException ie) { /* ignore */ }
  +            }
  +
           // XXX didn't honor HTTP/1.0 KeepAlive, should be fixed
            TcpConnection.shutdownInput( socket );
        }
  @@ -208,16 +220,6 @@
            log( "Error reading request, ignored", e, Log.ERROR);
        } 
        finally {
  -            // When running tests against Tomcat on the same
  -            // system, we may need to force a thread switch
  -            // before closing the socket to give the other
  -            // end of the connection a chance to run
  -            if( delaySocketClose ) {
  -                try {
  -                    Thread.sleep(0);
  -                } catch (InterruptedException ie) { /* ignore */ }
  -            }
  -
            // recycle kernel sockets ASAP
           // XXX didn't honor HTTP/1.0 KeepAlive, should be fixed
            try { if (socket != null) socket.close (); }
  
  
  

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

Reply via email to