From: Bill Stoddard Date: Mon, 26 Nov 2001 17:26:54 +0000 (+0000) Subject: Win32: Do not continue to handle keepalive requests if the server process X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2134a605c4e5795a3c206ca5ceda3be4e70d4830;p=thirdparty%2Fapache%2Fhttpd.git Win32: Do not continue to handle keepalive requests if the server process is in the process of shutting down. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@92179 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/CHANGES b/src/CHANGES index 215de8bb5f3..8aaa729066d 100644 --- a/src/CHANGES +++ b/src/CHANGES @@ -1,9 +1,10 @@ -Changes with Apache 1.3.24 +Changes with Apache 1.3.23 + *) Win32: Do not allow threads to continue handling keepalive + requests after a shutdown or restart has ben signaled. + [Bill Stoddard] *) Win32: Accept OPTIONS * requests. [Keith Wannamaker] -Changes with Apache 1.3.23 - *) Unixware 7.0 and later did not have a default locking mechanism defined. This bug was introduced in apache 1.3.4. [Dean Gaudet] diff --git a/src/main/http_main.c b/src/main/http_main.c index 3d859b08ff3..6dd94de16fe 100644 --- a/src/main/http_main.c +++ b/src/main/http_main.c @@ -5839,7 +5839,14 @@ static void child_sub_main(int child_num) increment_counts(child_num, r); if (!current_conn->keepalive || current_conn->aborted) break; - + /* If the server is shutting down, do not allow anymore requests + * to be handled on the keepalive connection. Leave the thread + * alive to drain the job queue. This check is particularly + * important on the threaded server to allow the process to be + * quickly taken down cleanly. + */ + if (allowed_globals.exit_now) + break; ap_destroy_pool(r->pool); (void) ap_update_child_status(child_num, SERVER_BUSY_KEEPALIVE, (request_rec *) NULL); @@ -6203,7 +6210,7 @@ void worker_main(void) add_job(csd); } } - + APD2("process PID %d exiting", my_pid); /* Get ready to shutdown and exit */ @@ -6421,7 +6428,7 @@ void worker_main(void) total_jobs++; } } - + APD2("process PID %d exiting", my_pid); /* Get ready to shutdown and exit */