You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by hg...@apache.org on 2001/03/22 10:58:29 UTC

cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/modules/server Http10Interceptor.java

hgomez      01/03/22 01:58:29

  Modified:    src/share/org/apache/tomcat/modules/server
                        Http10Interceptor.java
  Log:
  Fix BUG #1006, by adding socket timeout
  Default is 300s (5mn) but you could configure it in server.xml
  timeout attribute (in second).
  
  Revision  Changes    Path
  1.16      +14 -0     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.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Http10Interceptor.java	2001/03/02 04:49:25	1.15
  +++ Http10Interceptor.java	2001/03/22 09:58:28	1.16
  @@ -94,6 +94,8 @@
   public class Http10Interceptor extends PoolTcpConnector
       implements  TcpConnectionHandler
   {
  +	private int	timeout = 300000;	// 5 minutes as in Apache HTTPD server
  +
       public Http10Interceptor() {
   	super();
       }
  @@ -105,6 +107,10 @@
       }
   
       // -------------------- Attributes --------------------
  +    public void setTimeout( int timeouts ) {
  +    timeout = timeouts * 1000;
  +    }
  +
       // -------------------- Handler implementation --------------------
       public void setServer( Object o ) {
   	this.cm=(ContextManager)o;
  @@ -131,6 +137,7 @@
   	    resA=(HttpResponse)thData[1];
   
   	    socket=connection.getSocket();
  +		socket.setSoTimeout(timeout);
   
   	    reqA.setSocket( socket );
   	    resA.setSocket( socket );
  @@ -149,6 +156,13 @@
   	    log( "SocketException reading request, ignored", null,
   		 Log.INFORMATION);
   	    log( "SocketException reading request:", e, Log.DEBUG);
  +	}
  +	catch (java.io.InterruptedIOException ioe) {
  +		// We have armed a timeout on read as does apache httpd server.
  +		// Just to avoid staying with inactive connection
  +		// BUG#1006
  +		ioe.printStackTrace();
  +		log( "Timeout reading request, aborting", ioe, Log.ERROR);
   	}
   	catch (java.io.IOException e) {
   	    // IOExceptions are normal