]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
PR60647: ACC per connection not available w/ event MPM
authorEric Covener <covener@apache.org>
Wed, 25 Jan 2017 22:23:43 +0000 (22:23 +0000)
committerEric Covener <covener@apache.org>
Wed, 25 Jan 2017 22:23:43 +0000 (22:23 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1780280 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
include/ap_mmn.h
include/scoreboard.h
modules/http/http_core.c
server/scoreboard.c

diff --git a/CHANGES b/CHANGES
index f462268c13a30adcb620f2c7b310765fa158b3d5..6166fa19e7bc000818936402145bbfdbe18756d8 100644 (file)
--- 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.
index 37bcdfb05a6907cc657bbb70114ec19d938209bb..31c9cd7a8a070f74109b041d72df01e75d935b49 100644 (file)
  * 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" */
 #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
index 1c15a86df45591cefbb1b048992db80fc6f880c0..8664983119c4e160f33fca578b90850f525c737a 100644 (file)
@@ -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);
index 70c47d1eb2ec72d7d80c71e999f57b550166b557..b5b082e36e75cb4213659a4755a713e6ab2c11e2 100644 (file)
@@ -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
index 36fe995cbe45f4d9cefdb37445b63794666fefdc..6c0d024d9ef553d11391f8d22c654e8d3583dd83 100644 (file)
@@ -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;