From: Eric Covener Date: Wed, 25 Jan 2017 22:23:43 +0000 (+0000) Subject: PR60647: ACC per connection not available w/ event MPM X-Git-Tag: 2.5.0-alpha~749 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f05f006b854db6586be87179efad30b9a3b37ff8;p=thirdparty%2Fapache%2Fhttpd.git PR60647: ACC per connection not available w/ event MPM git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1780280 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index f462268c13a..6166fa19e7b 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,10 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 + *) When using mod_status with the Event MPM, report the number of requests + associated with an active connection in the "ACC" field. Previously + zero was always reported with this MPM. PR60647. [Eric Covener] + *) core: %{DOCUMENT_URI} used in nested SSI expressions should point to the URI originally requsted by the user, not the nested documents URI. This restores the behavior of this variable to match the "legacy" SSI parser. diff --git a/include/ap_mmn.h b/include/ap_mmn.h index 37bcdfb05a6..31c9cd7a8a0 100644 --- a/include/ap_mmn.h +++ b/include/ap_mmn.h @@ -549,6 +549,7 @@ * 20161018.1 (2.5.0-dev) Dropped ap_has_cntrls(), ap_scan_http_uri_safe(), * ap_get_http_token() and http_stricturi conf member. * Added ap_scan_vchar_obstext() + * 20161018.2 (2.5.0-dev) add ap_set_conn_count() */ #define MODULE_MAGIC_COOKIE 0x41503235UL /* "AP25" */ @@ -556,7 +557,7 @@ #ifndef MODULE_MAGIC_NUMBER_MAJOR #define MODULE_MAGIC_NUMBER_MAJOR 20161018 #endif -#define MODULE_MAGIC_NUMBER_MINOR 1 /* 0...n */ +#define MODULE_MAGIC_NUMBER_MINOR 2 /* 0...n */ /** * Determine if the server's current MODULE_MAGIC_NUMBER is at least a diff --git a/include/scoreboard.h b/include/scoreboard.h index 1c15a86df45..8664983119c 100644 --- a/include/scoreboard.h +++ b/include/scoreboard.h @@ -169,6 +169,7 @@ apr_status_t ap_cleanup_scoreboard(void *d); */ AP_DECLARE(int) ap_exists_scoreboard_image(void); AP_DECLARE(void) ap_increment_counts(ap_sb_handle_t *sbh, request_rec *r); +AP_DECLARE(void) ap_set_conn_count(ap_sb_handle_t *sb, request_rec *r, unsigned short conn_count); AP_DECLARE(apr_status_t) ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int detached); AP_DECLARE(void) ap_init_scoreboard(void *shared_score); diff --git a/modules/http/http_core.c b/modules/http/http_core.c index 70c47d1eb2e..b5b082e36e7 100644 --- a/modules/http/http_core.c +++ b/modules/http/http_core.c @@ -142,7 +142,7 @@ static int ap_process_http_async_connection(conn_rec *c) while (cs->state == CONN_STATE_READ_REQUEST_LINE) { ap_update_child_status_from_conn(c->sbh, SERVER_BUSY_READ, c); - + if (ap_extended_status) ap_set_conn_count(c->sbh, r, c->keepalives); if ((r = ap_read_request(c))) { c->keepalive = AP_CONN_UNKNOWN; @@ -150,6 +150,7 @@ static int ap_process_http_async_connection(conn_rec *c) if (r->status == HTTP_OK) { cs->state = CONN_STATE_HANDLER; + if (ap_extended_status) ap_set_conn_count(c->sbh, r, c->keepalives+1); ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, r); ap_process_async_request(r); /* After the call to ap_process_request, the diff --git a/server/scoreboard.c b/server/scoreboard.c index 36fe995cbe4..6c0d024d9ef 100644 --- a/server/scoreboard.c +++ b/server/scoreboard.c @@ -364,6 +364,17 @@ AP_DECLARE(int) ap_exists_scoreboard_image(void) return (ap_scoreboard_image ? 1 : 0); } +AP_DECLARE(void) ap_set_conn_count(ap_sb_handle_t *sb, request_rec *r, unsigned short conn_count) +{ + worker_score *ws; + + if (!sb) + return; + + ws = &ap_scoreboard_image->servers[sb->child_num][sb->thread_num]; + ws->conn_count = conn_count; +} + AP_DECLARE(void) ap_increment_counts(ap_sb_handle_t *sb, request_rec *r) { worker_score *ws;