mturk       2005/07/16 05:11:11

  Modified:    util/java/org/apache/tomcat/util/net AprEndpoint.java
  Log:
  Add APR_SO_REUSEADDR and APR_SO_KEEPALIVE to the listening
  socket. This resolves 'address in use exception', and is the way how
  the Apache HTTPD is using the APR.
  See the: server/listen.c
  
  Revision  Changes    Path
  1.66      +8 -0      
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/AprEndpoint.java
  
  Index: AprEndpoint.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/AprEndpoint.java,v
  retrieving revision 1.65
  retrieving revision 1.66
  diff -u -r1.65 -r1.66
  --- AprEndpoint.java  15 Jul 2005 15:40:00 -0000      1.65
  +++ AprEndpoint.java  16 Jul 2005 12:11:11 -0000      1.66
  @@ -24,6 +24,7 @@
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  +import org.apache.tomcat.jni.OS;
   import org.apache.tomcat.jni.Address;
   import org.apache.tomcat.jni.Error;
   import org.apache.tomcat.jni.File;
  @@ -511,6 +512,9 @@
           // Create the APR server socket
           serverSock = Socket.create(Socket.APR_INET, Socket.SOCK_STREAM,
                   Socket.APR_PROTO_TCP, rootPool);
  +        if (OS.IS_UNIX) {
  +            Socket.optSet(serverSock, Socket.APR_SO_REUSEADDR, 1);    
  +        }
           // Bind the server socket
           int ret = Socket.bind(serverSock, inetAddress);
           if (ret != 0) {
  @@ -521,6 +525,10 @@
           if (ret != 0) {
               throw new Exception(sm.getString("endpoint.init.listen", "" + 
ret));
           }
  +        if (OS.IS_WIN32 || OS.IS_WIN64) {
  +            // On Windows set the reuseaddr flag after the bind/listen
  +            Socket.optSet(serverSock, Socket.APR_SO_REUSEADDR, 1);    
  +        }
   
           // Sendfile usage on systems which don't support it cause major 
problems
           if (useSendfile && !Library.APR_HAS_SENDFILE) {
  
  
  

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

Reply via email to