chuck 97/01/09 19:39:20
Modified: src http_main.c CHANGES Log: Reviewed by: Jim Jagielski, Brian Behlendorf, Chuck Murcko Submitted by: Ed Korthof <[EMAIL PROTECTED]> There is one incorrect comparison (which still doesn't allow for more children than HARD_SERVER_LIMIT, though it would allow one more child than the maximum specified, if that was less than HARD_SERVER_LIMIT). There is also the possibility of messing up your server if you specify StartServers > HARD_SERVER_LIMIT (the latter may cause fatal memory corruption -- it did in the one test I've run). The attached patch fixes both of those. Revision Changes Path 1.102 +2 -2 apache/src/http_main.c Index: http_main.c =================================================================== RCS file: /export/home/cvs/apache/src/http_main.c,v retrieving revision 1.101 retrieving revision 1.102 diff -C3 -r1.101 -r1.102 *** http_main.c 1997/01/01 18:10:20 1.101 --- http_main.c 1997/01/10 03:39:15 1.102 *************** *** 1947,1953 **** if (daemons_max_free < daemons_min_free + 1) /* Don't thrash... */ daemons_max_free = daemons_min_free + 1; ! while (num_children < daemons_to_start) { make_child(server_conf, num_children++); } --- 1947,1953 ---- if (daemons_max_free < daemons_min_free + 1) /* Don't thrash... */ daemons_max_free = daemons_min_free + 1; ! while (num_children < daemons_to_start && num_children < daemons_limit) { make_child(server_conf, num_children++); } *************** *** 1970,1976 **** sync_scoreboard_image(); if ((count_idle_servers() < daemons_min_free) && (child_slot = find_free_child_num()) >= 0 ! && child_slot <= daemons_limit) { Explain1("Starting new child in slot %d",child_slot); (void)update_child_status(child_slot,SERVER_STARTING, (request_rec*)NULL); --- 1970,1976 ---- sync_scoreboard_image(); if ((count_idle_servers() < daemons_min_free) && (child_slot = find_free_child_num()) >= 0 ! && child_slot < daemons_limit) { Explain1("Starting new child in slot %d",child_slot); (void)update_child_status(child_slot,SERVER_STARTING, (request_rec*)NULL); 1.114 +4 -0 apache/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.113 retrieving revision 1.114 diff -C3 -r1.113 -r1.114 *** CHANGES 1997/01/07 21:55:38 1.113 --- CHANGES 1997/01/10 03:39:17 1.114 *************** *** 1,5 **** --- 1,9 ---- Changes with Apache 1.2b5 + *) Fix incorrect comparison which could allow number of children = + MaxClients + 1 if less than HARD_SERVER_LIMIT. Also fix potential + problem if StartServers > HARD_SERVER_LIMIT. [Ed Korthof] + *) Replace instances of inet_ntoa() with inet_addr() for ProxyBlock. It's more portable. [Martin Kraemer]