summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGES4
-rw-r--r--include/ap_mmn.h3
-rw-r--r--include/scoreboard.h1
-rw-r--r--modules/http/http_core.c3
-rw-r--r--server/scoreboard.c11
5 files changed, 20 insertions, 2 deletions
diff --git a/CHANGES b/CHANGES
index f462268c13..6166fa19e7 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 37bcdfb05a..31c9cd7a8a 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 1c15a86df4..8664983119 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 70c47d1eb2..b5b082e36e 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 36fe995cbe..6c0d024d9e 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;