Commit a305aab4 authored by Greg Ames's avatar Greg Ames
Browse files

scratch an old itch - give lingering close its own state in the scoreboard.

clean up SERVER_ACCEPTING and SERVER_QUEUEING (never set) while I'm at it.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89542 13f79535-47bb-0310-9956-ffa450edef68
parent 0e521af5
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -91,11 +91,10 @@ extern "C" {
#define SERVER_BUSY_KEEPALIVE 5	/* Waiting for more requests via keepalive */
#define SERVER_BUSY_LOG 6	/* Logging the request */
#define SERVER_BUSY_DNS 7	/* Looking up a hostname */
#define SERVER_GRACEFUL 8	/* server is gracefully finishing request */
#define SERVER_ACCEPTING 9	/* thread is accepting connections */
#define SERVER_QUEUEING	10      /* thread is putting connection on the queue */
#define SERVER_IDLE_KILL 11     /* Server is cleaning up idle children. */
#define SERVER_NUM_STATUS 12	/* number of status settings */
#define SERVER_CLOSING 8	/* Closing the connection */
#define SERVER_GRACEFUL 9	/* server is gracefully finishing request */
#define SERVER_IDLE_KILL 10     /* Server is cleaning up idle children. */
#define SERVER_NUM_STATUS 11	/* number of status settings */

/* Type used for generation indicies.  Startup and every restart cause a
 * new generation of children to be spawned.  Children within the same
+9 −1
Original line number Diff line number Diff line
@@ -464,8 +464,9 @@ static int status_handler(request_rec *r)
	ap_rputs("\"<B><code>W</code></B>\" Sending Reply, \n", r);
	ap_rputs("\"<B><code>K</code></B>\" Keepalive (read), \n", r);
	ap_rputs("\"<B><code>D</code></B>\" DNS Lookup,<BR>\n", r);
	ap_rputs("\"<B><code>C</code></B>\" Closing connection, \n", r);
	ap_rputs("\"<B><code>L</code></B>\" Logging, \n", r);
	ap_rputs("\"<B><code>G</code></B>\" Gracefully finishing, \n", r);
	ap_rputs("\"<B><code>G</code></B>\" Gracefully finishing,<BR> \n", r);
        ap_rputs("\"<B><code>I</code></B>\" Idle cleanup of worker, \n", r);
	ap_rputs("\"<B><code>.</code></B>\" Open slot with no current process<P>\n", r);
	ap_rputs("<P>\n", r);
@@ -585,6 +586,9 @@ static int status_handler(request_rec *r)
			case SERVER_BUSY_DNS:
			    ap_rputs("<b>DNS lookup</b>", r);
			    break;
			case SERVER_CLOSING:
			    ap_rputs("<b>Closing</b>", r);
			    break;
			case SERVER_DEAD:
			    ap_rputs("Dead", r);
			    break;
@@ -659,6 +663,9 @@ static int status_handler(request_rec *r)
			case SERVER_BUSY_DNS:
			    ap_rputs("<td><b>D</b>", r);
			    break;
			case SERVER_CLOSING:
			    ap_rputs("<td><b>C</b>", r);
			    break;
			case SERVER_DEAD:
			    ap_rputs("<td>.", r);
			    break;
@@ -764,6 +771,7 @@ static void status_init(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, serv
    status_flags[SERVER_BUSY_KEEPALIVE] = 'K';
    status_flags[SERVER_BUSY_LOG] = 'L';
    status_flags[SERVER_BUSY_DNS] = 'D';
    status_flags[SERVER_CLOSING] = 'C';
    status_flags[SERVER_GRACEFUL] = 'G';
    status_flags[SERVER_IDLE_KILL] = 'I';
}
+2 −0
Original line number Diff line number Diff line
@@ -157,6 +157,8 @@ void ap_lingering_close(conn_rec *c)
    apr_int32_t timeout;
    apr_int32_t total_linger_time = 0;

    ap_update_child_status(AP_CHILD_THREAD_FROM_ID(c->id), SERVER_CLOSING, NULL);

#ifdef NO_LINGCLOSE
    ap_flush_conn(c);	/* just close it */
    apr_socket_close(c->client_socket);
+1 −1
Original line number Diff line number Diff line
@@ -279,7 +279,7 @@ int ap_update_child_status(int child_num, int thread_num, int status, request_re

    ps = &ap_scoreboard_image->parent[child_num];
    
    if ((status == SERVER_READY  || status == SERVER_ACCEPTING)
    if (status == SERVER_READY
	&& old_status == SERVER_STARTING) {
        ws->thread_num = child_num * HARD_SERVER_LIMIT + thread_num;
        ps->generation = ap_my_generation;