Received: by taz.hyperreal.com (8.7.5/V2.0) id KAA25734; Sun, 8 Sep 1996 10:24:59 -0700 (PDT) Received: by taz.hyperreal.com (8.7.5/V2.0) id KAA25726; Sun, 8 Sep 1996 10:24:58 -0700 (PDT) Date: Sun, 8 Sep 1996 10:24:58 -0700 (PDT) From: Ben Laurie Message-Id: <199609081724.KAA25726@taz.hyperreal.com> To: apache-cvs@hyperreal.com Subject: cvs commit: apache/src CHANGES http_main.c Sender: owner-apache-cvs@apache.org Precedence: bulk Reply-To: new-httpd@hyperreal.com ben 96/09/08 10:24:57 Modified: src CHANGES http_main.c Log: Fix race condition in wait_or_timeout (experimentally). Revision Changes Path 1.61 +4 -1 apache/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.60 retrieving revision 1.61 diff -C3 -r1.60 -r1.61 *** CHANGES 1996/08/24 14:39:30 1.60 --- CHANGES 1996/09/08 17:24:55 1.61 *************** *** 1,6 **** ! $Id: CHANGES,v 1.60 1996/08/24 14:39:30 ben Exp $ Changes with Apache 1.2b1: *) Configuration flags should be either "on" or "off". Apache was not enforcing this restriction. Fixed. [Ben Laurie] --- 1,9 ---- ! $Id: CHANGES,v 1.61 1996/09/08 17:24:55 ben Exp $ Changes with Apache 1.2b1: + + *) Fix a race condition which could cause the parent server to hang on + heavily loaded systems. [Ben Laurie] *) Configuration flags should be either "on" or "off". Apache was not enforcing this restriction. Fixed. [Ben Laurie] 1.66 +19 -1 apache/src/http_main.c Index: http_main.c =================================================================== RCS file: /export/home/cvs/apache/src/http_main.c,v retrieving revision 1.65 retrieving revision 1.66 diff -C3 -r1.65 -r1.66 *** http_main.c 1996/09/08 17:14:58 1.65 --- http_main.c 1996/09/08 17:24:55 1.66 *************** *** 50,56 **** * */ ! /* $Id: http_main.c,v 1.65 1996/09/08 17:14:58 ben Exp $ */ /* * httpd.c: simple http daemon for answering WWW file requests --- 50,56 ---- * */ ! /* $Id: http_main.c,v 1.66 1996/09/08 17:24:55 ben Exp $ */ /* * httpd.c: simple http daemon for answering WWW file requests *************** *** 958,963 **** --- 958,980 ---- * a while... */ + #if 1 + + static int wait_or_timeout(int *status) + { + int ret; + + ret=waitpid(-1,status,WNOHANG); + if(ret <= 0) + { + sleep(1); + return -1; + } + return ret; + } + + #else + static JMP_BUF wait_timeout_buf; static void longjmp_out_of_alarm (int sig) { *************** *** 1001,1006 **** --- 1018,1024 ---- return wait_or_timeout_retval; } + #endif /***************************************************************** * Here follows a long bunch of generic server bookkeeping stuff...