Return-Path:
Delivered-To: apmail-httpd-cvs-archive@www.apache.org
Received: (qmail 81239 invoked from network); 9 Jan 2011 23:00:54 -0000
Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3)
by minotaur.apache.org with SMTP; 9 Jan 2011 23:00:54 -0000
Received: (qmail 57429 invoked by uid 500); 9 Jan 2011 23:00:54 -0000
Delivered-To: apmail-httpd-cvs-archive@httpd.apache.org
Received: (qmail 57340 invoked by uid 500); 9 Jan 2011 23:00:54 -0000
Mailing-List: contact cvs-help@httpd.apache.org; run by ezmlm
Precedence: bulk
Reply-To: dev@httpd.apache.org
list-help:
list-unsubscribe:
List-Post:
List-Id:
Delivered-To: mailing list cvs@httpd.apache.org
Received: (qmail 57296 invoked by uid 99); 9 Jan 2011 23:00:54 -0000
Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136)
by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 09 Jan 2011 23:00:54 +0000
X-ASF-Spam-Status: No, hits=-2000.0 required=10.0
tests=ALL_TRUSTED
X-Spam-Check-By: apache.org
Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4)
by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 09 Jan 2011 23:00:53 +0000
Received: by eris.apache.org (Postfix, from userid 65534)
id B21382388A67; Sun, 9 Jan 2011 23:00:33 +0000 (UTC)
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: svn commit: r1057048 - in /httpd/httpd/trunk: CHANGES
modules/generators/mod_status.c
Date: Sun, 09 Jan 2011 23:00:33 -0000
To: cvs@httpd.apache.org
From: sf@apache.org
X-Mailer: svnmailer-1.0.8
Message-Id: <20110109230033.B21382388A67@eris.apache.org>
Author: sf
Date: Sun Jan 9 23:00:33 2011
New Revision: 1057048
URL: http://svn.apache.org/viewvc?rev=1057048&view=rev
Log:
mod_status: Don't show slots which are disabled by MaxClients as open.
PR: 47022
Submitted by: Jordi Prats , Stefan Fritsch
Modified:
httpd/httpd/trunk/CHANGES
httpd/httpd/trunk/modules/generators/mod_status.c
Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1057048&r1=1057047&r2=1057048&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Sun Jan 9 23:00:33 2011
@@ -2,6 +2,9 @@
Changes with Apache 2.3.11
+ *) mod_status: Don't show slots which are disabled by MaxClients as open.
+ PR: 47022 [Jordi Prats , Stefan Fritsch]
+
*) mpm_prefork: Fix ap_mpm_query results for AP_MPMQ_MAX_DAEMONS and
AP_MPMQ_MAX_THREADS.
Modified: httpd/httpd/trunk/modules/generators/mod_status.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/generators/mod_status.c?rev=1057048&r1=1057047&r2=1057048&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/generators/mod_status.c (original)
+++ httpd/httpd/trunk/modules/generators/mod_status.c Sun Jan 9 23:00:33 2011
@@ -86,7 +86,7 @@
module AP_MODULE_DECLARE_DATA status_module;
-static int server_limit, thread_limit;
+static int server_limit, thread_limit, threads_per_child, max_servers;
/* Implement 'ap_run_status_hook'. */
APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(ap, STATUS, int, status_hook,
@@ -172,7 +172,11 @@ static const struct stat_opt status_opti
{STAT_OPT_END, NULL, NULL}
};
-static char status_flags[SERVER_NUM_STATUS];
+/* add another state for slots above the MaxClients setting */
+#define SERVER_DISABLED SERVER_NUM_STATUS
+#define MOD_STATUS_NUM_STATUS (SERVER_NUM_STATUS+1)
+
+static char status_flags[MOD_STATUS_NUM_STATUS];
static int status_handler(request_rec *r)
{
@@ -293,7 +297,12 @@ static int status_handler(request_rec *r
ws_record = ap_get_scoreboard_worker_from_indexes(i, j);
res = ws_record->status;
- stat_buffer[indx] = status_flags[res];
+
+ if ((i >= max_servers || j >= threads_per_child)
+ && (res == SERVER_DEAD))
+ stat_buffer[indx] = status_flags[SERVER_DISABLED];
+ else
+ stat_buffer[indx] = status_flags[res];
if (!ps_record->quiescing
&& ps_record->pid) {
@@ -483,7 +492,8 @@ static int status_handler(request_rec *r
ap_rputs("\"L
\" Logging, \n", r);
ap_rputs("\"G
\" Gracefully finishing,
\n", r);
ap_rputs("\"I
\" Idle cleanup of worker, \n", r);
- ap_rputs("\".
\" Open slot with no current process
\n", r);
+ ap_rputs("\".
\" Open slot with no current process,
\n", r);
+ ap_rputs("\"
\" Slot disabled by MaxClients setting\n", r);
ap_rputs("\n", r);
if (!ap_extended_status) {
int j;
@@ -809,8 +819,14 @@ static int status_init(apr_pool_t *p, ap
status_flags[SERVER_CLOSING] = 'C';
status_flags[SERVER_GRACEFUL] = 'G';
status_flags[SERVER_IDLE_KILL] = 'I';
+ status_flags[SERVER_DISABLED] = ' ';
ap_mpm_query(AP_MPMQ_HARD_LIMIT_THREADS, &thread_limit);
ap_mpm_query(AP_MPMQ_HARD_LIMIT_DAEMONS, &server_limit);
+ ap_mpm_query(AP_MPMQ_MAX_THREADS, &threads_per_child);
+ /* work around buggy MPMs */
+ if (threads_per_child == 0)
+ threads_per_child = 1;
+ ap_mpm_query(AP_MPMQ_MAX_DAEMONS, &max_servers);
return OK;
}