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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to