Received: (from majordom@localhost) by hyperreal.org (8.8.5/8.8.5) id LAA09191; Mon, 28 Jul 1997 11:50:20 -0700 (PDT) Received: (from gnats@localhost) by hyperreal.org (8.8.5/8.8.5) id LAA09112; Mon, 28 Jul 1997 11:50:04 -0700 (PDT) Date: Mon, 28 Jul 1997 11:50:04 -0700 (PDT) Message-Id: <199707281850.LAA09112@hyperreal.org> To: apache-bugdb@apache.org Cc: apache-bugdb@apache.org From: Dean Gaudet Subject: Re: os-solaris/923: Solaris patch does not fix problem Reply-To: Dean Gaudet Sender: apache-bugdb-owner@apache.org Precedence: bulk The following reply was made to PR os-solaris/923; it has been noted by GNATS. From: Dean Gaudet To: Phil Kernick Subject: Re: os-solaris/923: Solaris patch does not fix problem Date: Mon, 28 Jul 1997 11:45:07 -0700 (PDT) Phil, please try the patch below. You have to reverse the old patch (use patch -R, or unpack apache_1.2.1 again and retrieve the original http_main.c out of it). 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 */