www-apache-bugdb mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dean Gaudet <dgau...@arctic.org>
Subject Re: os-solaris/896: Even with patch, HTTPd will not survive HUP or even start up
Date Mon, 28 Jul 1997 18:50:01 GMT
The following reply was made to PR os-solaris/896; it has been noted by GNATS.

From: Dean Gaudet <dgaudet@arctic.org>
To: marcel@aware.nl
Subject: Re: os-solaris/896: Even with patch, HTTPd will not survive HUP or even start up
Date: Mon, 28 Jul 1997 11:41:45 -0700 (PDT)

 
 Marcel,
 
 Please reverse the old patch (use patch -R, or just unpack apache_1.2.1
 and copy the original http_main.c out of it into your working directory)
 and try applying the patch below.
 
 As you'll see in the comment we discovered more accurately what the
 problem is.
 
 Dean
 
 --- apache_1.2.1-dist/src/http_main.c	Sun Jun 29 11:08:37 1997
 +++ apache_1.2.1/src/http_main.c	Mon Jul 28 11:35:36 1997
 @@ -1982,7 +1982,27 @@
          exit(1);
      }
  
 +    /* Solaris, at least versions 2.4, 2.5 and 2.5.1, even with various
 +     * levels of tcp/ip patches available as of July 28, 1997, completely
 +     * botches up if you do any form of dup() on a socket.  If that dupped
 +     * socket is then put into listen() and accept()s at least one
 +     * connection, then Bad Things happen.  Things work fine until the
 +     * socket is close()d.  At that point, no matter what SO_REUSEADDR was
 +     * set to, nothing can rebind the same address/port, you'll get
 +     * "Address in use" errors.  This takes about 5 minutes to timeout.
 +     *
 +     * So we do no slacking on solaris sockets.  If you can live with those
 +     * restrictions (which essentially means you have to use SIGUSR1 and
 +     * not SIGHUP to restart the server, and should you ever need to stop
 +     * the server you'll have at least a 5 minute wait before you can
 +     * restart it) then you can remove this #ifndef.  You'll get yourself
 +     * another 120ish virtual hosts (assuming you're using Listen for each
 +     * of them) before you run into another Solaris problem:  the 256
 +     * FILE * limitation.
 +     */
 +#ifndef SOLARIS2
      s = ap_slack(s, AP_SLACK_HIGH);
 +#endif
  
      note_cleanups_for_fd(pconf, s); /* arrange to close on exec or restart */
      
 
 

Mime
View raw message