From: Graham Leggett Date: Mon, 27 May 2019 12:31:24 +0000 (+0000) Subject: mod_status: PR60647: ACC per connection not available w/ event MPM X-Git-Tag: 2.4.40~112 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=110524c95ee244d777efda27076323dff113cdda;p=thirdparty%2Fapache%2Fhttpd.git mod_status: PR60647: ACC per connection not available w/ event MPM trunk patch: http://svn.apache.org/r1780280 2.4.x patch: svn merge -c 1780280 ^/httpd/httpd/trunk . (minus CHANGES and ap_mmn.h) +1: jailletc36, jim, rjung git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1860128 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 64f018e7582..e4b8d7ec910 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,10 @@ -*- coding: utf-8 -*- Changes with Apache 2.4.40 + *) 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] + *) mod_http2: remove the no longer existing h2_ngn_shed.c from Cmake. [Stefan Eissing] diff --git a/STATUS b/STATUS index 23417649a36..8223422be6c 100644 --- a/STATUS +++ b/STATUS @@ -127,12 +127,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) mod_status: PR60647: ACC per connection not available w/ event MPM - trunk patch: http://svn.apache.org/r1780280 - 2.4.x patch: svn merge -c 1780280 ^/httpd/httpd/trunk . - (minus CHANGES and ap_mmn.h) - +1: jailletc36, jim, rjung - *) Easy patches: synch 2.4.x and trunk - core: 80 chars - http_core: Clean-uo and style. No functional change overall diff --git a/include/ap_mmn.h b/include/ap_mmn.h index 4739f7f64d3..536eb65b6c7 100644 --- a/include/ap_mmn.h +++ b/include/ap_mmn.h @@ -525,6 +525,7 @@ * 20120211.83 (2.4.35-dev) Add client64 field to worker_score struct * 20120211.84 (2.4.35-dev) Add ap_no2slash_ex() and merge_slashes to * core_server_conf. + * 20120211.85 (2.4.40-dev) add ap_set_conn_count(). * */ @@ -533,7 +534,7 @@ #ifndef MODULE_MAGIC_NUMBER_MAJOR #define MODULE_MAGIC_NUMBER_MAJOR 20120211 #endif -#define MODULE_MAGIC_NUMBER_MINOR 84 /* 0...n */ +#define MODULE_MAGIC_NUMBER_MINOR 85 /* 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 92d198d6de1..fe39d44eb4e 100644 --- a/include/scoreboard.h +++ b/include/scoreboard.h @@ -176,6 +176,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 35869b45b3f..31d7a389db9 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 23e3d7022ff..4ac862a94eb 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;