You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bi...@apache.org on 2005/09/25 01:53:23 UTC

cvs commit: jakarta-tomcat-connectors/jk/java/org/apache/jk/common ChannelNioSocket.java ChannelSocket.java

billbarker    2005/09/24 16:53:23

  Modified:    jk/java/org/apache/jk/common ChannelNioSocket.java
                        ChannelSocket.java
  Log:
  Gracefully handle the case where some Socket options are disabled at the OS level.
  
  For reasons known only to Sun, Socket.setSoLinger actually throws an exception on some Solaris systems.  Since I'm betting that virtually nobody ever sets this option explictly, just log the error at DEBUG level and continue on.
  
  Revision  Changes    Path
  1.7       +17 -6     jakarta-tomcat-connectors/jk/java/org/apache/jk/common/ChannelNioSocket.java
  
  Index: ChannelNioSocket.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/jk/common/ChannelNioSocket.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ChannelNioSocket.java	27 Jul 2005 15:12:01 -0000	1.6
  +++ ChannelNioSocket.java	24 Sep 2005 23:53:22 -0000	1.7
  @@ -34,6 +34,7 @@
   import java.net.InetSocketAddress;
   import java.net.ServerSocket;
   import java.net.Socket;
  +import java.net.SocketException;
   
   import javax.management.ListenerNotFoundException;
   import javax.management.MBeanNotificationInfo;
  @@ -320,12 +321,12 @@
           ep.setNote( socketNote, s );
           if(log.isDebugEnabled() )
               log.debug("Accepted socket " + s +" channel "  + sc.isBlocking());
  -        if( linger > 0 )
  -            s.setSoLinger( true, linger);
  -        if( socketTimeout > 0 ) 
  -            s.setSoTimeout( socketTimeout );
  -        
  -        s.setTcpNoDelay( tcpNoDelay ); // set socket tcpnodelay state
  +
  +        try {
  +            setSocketOptions(s);
  +        } catch(SocketException sex) {
  +            log.debug("Error initializing Socket Options", sex);
  +        }
           
           requestCount++;
   
  @@ -337,6 +338,16 @@
           ep.setControl( tp );
       }
   
  +    private void setSocketOptions(Socket s) throws SocketException {
  +        if( socketTimeout > 0 ) 
  +            s.setSoTimeout( socketTimeout );
  +        
  +        s.setTcpNoDelay( tcpNoDelay ); // set socket tcpnodelay state
  +
  +        if( linger > 0 )
  +            s.setSoLinger( true, linger);
  +    }
  +
       public void resetCounters() {
           requestCount=0;
       }
  
  
  
  1.58      +16 -6     jakarta-tomcat-connectors/jk/java/org/apache/jk/common/ChannelSocket.java
  
  Index: ChannelSocket.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/jk/common/ChannelSocket.java,v
  retrieving revision 1.57
  retrieving revision 1.58
  diff -u -r1.57 -r1.58
  --- ChannelSocket.java	27 Jul 2005 15:12:01 -0000	1.57
  +++ ChannelSocket.java	24 Sep 2005 23:53:22 -0000	1.58
  @@ -294,12 +294,12 @@
           ep.setNote( socketNote, s );
           if(log.isDebugEnabled() )
               log.debug("Accepted socket " + s );
  -        if( linger > 0 )
  -            s.setSoLinger( true, linger);
  -        if( socketTimeout > 0 ) 
  -            s.setSoTimeout( socketTimeout );
  -        
  -        s.setTcpNoDelay( tcpNoDelay ); // set socket tcpnodelay state
  +
  +        try {
  +            setSocketOptions(s);
  +        } catch(SocketException sex) {
  +            log.debug("Error initializing Socket Options", sex);
  +        }
           
           requestCount++;
   
  @@ -314,6 +314,16 @@
           ep.setControl( tp );
       }
   
  +    private void setSocketOptions(Socket s) throws SocketException {
  +        if( socketTimeout > 0 ) 
  +            s.setSoTimeout( socketTimeout );
  +        
  +        s.setTcpNoDelay( tcpNoDelay ); // set socket tcpnodelay state
  +
  +        if( linger > 0 )
  +            s.setSoLinger( true, linger);
  +    }
  +
       public void resetCounters() {
           requestCount=0;
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org