From: Greg Ames Date: Tue, 22 Nov 2011 15:34:47 +0000 (+0000) Subject: garbage C's in server-status and extra processes with async lingering close. X-Git-Tag: 2.3.16~120 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a86167f39d83d9ca915de1be8c89a4d691b43cd4;p=apache garbage C's in server-status and extra processes with async lingering close. backport r1203708 from trunk. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1205039 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/server/connection.c b/server/connection.c index 13ba951b0c..6e4495f838 100644 --- a/server/connection.c +++ b/server/connection.c @@ -102,7 +102,9 @@ AP_DECLARE(int) ap_start_lingering_close(conn_rec *c) return 1; } - ap_update_child_status(c->sbh, SERVER_CLOSING, NULL); + if (c->sbh) { + ap_update_child_status(c->sbh, SERVER_CLOSING, NULL); + } #ifdef NO_LINGCLOSE ap_flush_conn(c); /* just close it */ diff --git a/server/mpm/event/event.c b/server/mpm/event/event.c index 62560a1d7e..665d65833c 100644 --- a/server/mpm/event/event.c +++ b/server/mpm/event/event.c @@ -746,6 +746,11 @@ static void set_signals(void) static int start_lingering_close(event_conn_state_t *cs) { apr_status_t rv; + + cs->c->sbh = NULL; /* prevent scoreboard updates from the listener + * worker will loop around and set SERVER_READY soon + */ + if (ap_start_lingering_close(cs->c)) { apr_pool_clear(cs->p); ap_push_pool(worker_queue_info, cs->p);