stoddard 99/07/23 12:33:12
Modified: src/main http_main.c Log: Exit the child process immediately upon MaxRequestPerChild being hit. Revision Changes Path 1.459 +7 -26 apache-1.3/src/main/http_main.c Index: http_main.c =================================================================== RCS file: /home/cvs/apache-1.3/src/main/http_main.c,v retrieving revision 1.458 retrieving revision 1.459 diff -u -r1.458 -r1.459 --- http_main.c 1999/07/23 15:31:25 1.458 +++ http_main.c 1999/07/23 19:33:10 1.459 @@ -5449,8 +5449,6 @@ int i; struct timeval tv; int wait_time = 1; - int start_exit = 0; - int start_mutex_released = 0; int max_jobs_per_exe; int max_jobs_after_exit_request; HANDLE hObjects[2]; @@ -5495,7 +5493,7 @@ rv = WaitForMultipleObjects(2, hObjects, FALSE, INFINITE); if (rv == WAIT_FAILED) { ap_log_error(APLOG_MARK,APLOG_ERR|APLOG_WIN32ERROR, server_conf, - "Waiting for start_mutex or exit_event -- process will exit"); + "Waiting for start_mutex or exit_event -- process will exit"); ap_destroy_pool(pchild); cleanup_scoreboard(); @@ -5557,29 +5555,17 @@ } while (1) { -#if SEVERELY_VERBOSE - APD4("child PID %d: thread_main total_jobs=%d start_exit=%d", - my_pid, total_jobs, start_exit); -#endif - if ((max_jobs_per_exe && (total_jobs > max_jobs_per_exe) && !start_exit)) { - /* When MaxRequestsPerChild is hit, handle everything on the stack's - * listen queue before exiting. This may take a while if the server - * is really busy. + if (max_jobs_per_exe && (total_jobs > max_jobs_per_exe)) { + /* MaxRequestsPerChild hit... */ - start_exit = 1; - wait_time = 1; - ap_release_mutex(start_mutex); - start_mutex_released = 1; - APD2("process PID %d: start mutex released\n", my_pid); + break; } - /* Always check for the exit event being signaled. Honor the exit event, - * even if it means loosing connections in the stack's listen queue. + /* Always check for the exit event being signaled. */ rv = WaitForSingleObject(exit_event, 0); ap_assert((rv == WAIT_TIMEOUT) || (rv == WAIT_OBJECT_0)); if (rv == WAIT_OBJECT_0) { APD1("child: exit event signalled, exiting"); - start_exit = 1; break; } @@ -5615,10 +5601,7 @@ } count_select_errors = 0; /* reset count of errors */ if (srv == 0) { - if (start_exit) - break; - else - continue; + continue; } { @@ -5661,9 +5644,7 @@ /* Get ready to shutdown and exit */ allowed_globals.exit_now = 1; - if (!start_mutex_released) { - ap_release_mutex(start_mutex); - } + ap_release_mutex(start_mutex); #ifdef UNGRACEFUL_RESTART SetEvent(allowed_globals.thread_exit_event);