LICENSE at bottom ;-) This code is released under the same license as Apache. It _should_ work on Linux, BSDs and Solaris out of the box. It (the patch) will apply without failure to Apache 1.3.19 (<19, YMMV) As it is a patch, I assume that you will want it enabled, so the "PARENTALACCEPT" Apache Rule is enabled by default. You should notice a comment about adding PARENTAL_ACCEPT code in during the ./configure step. It provides a parent process that handles all accept system calls and postpones allocation to an Apache child until the accepted socket contains data for reading. This is done via System Vish IPC and requires the creation of one or more (depending on OS) AF_UNIX socket files to be created. These files are created in /tmp. I had it use /tmp and hardcoded because: o I was too lazy to add a configuration directive o I didn't want to require any changes to the httpd.conf o You can edit src/main/apue.h and change PARENTAL_ACCEPT_DIR or specify on in the extra CFLAGS if you want something else (like /var/run/apache) In addition to acting as accept filter, the patch will take all idle sessions (in a keep alive state with no data immediately available) and hand them back to the parent so you can free up the child. My testing shows that I can server several hundred simultaneous connections with 5 or 6 children. The scoreboard and mod_status modules have been modified to give a little insight as to what the current state it. Have lots of fun!!! Problems: mail me at jesus@omniti.com LICENSE: /* ==================================================================== * Copyright (c) 1999-2000 Theo Schlossnagle * Copyright (c) 1999-2000 OmniTI, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgment: * "This product includes software developed at The Center for * Networking and Distributed Systems at The Johns Hopkins University * for use in the Backhand project (http://www.cnds.jhu.edu/backhand). * Creator: Theo Schlossnagle * Guidance: Yair Amir " * * 4. The names "Backhand" and "mod_backhand" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please contact * backhand@cnds.jhu.edu. * * 5. Products derived from this software may not be called "mod_backhand" * nor may "mod_backhand" appear in their names without prior written * permission. For written permission, please contact * backhand@cnds.jhu.edu. * * 6. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed at OmniTI, Inc. for use * in the Apache web server project. * Creator: Theo Schlossnagle ." * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */