Not seeing a mmn bump... ?
> On Jan 21, 2016, at 11:36 AM, [email protected] wrote:
>
> Author: icing
> Date: Thu Jan 21 16:36:33 2016
> New Revision: 1726009
>
> URL: http://svn.apache.org/viewvc?rev=1726009&view=rev
> Log:
> scoreboard addition of protocol, new ap_udpte_child_status methods
>
> Modified:
> httpd/httpd/trunk/include/scoreboard.h
> httpd/httpd/trunk/modules/generators/mod_status.c
> httpd/httpd/trunk/modules/ssl/ssl_engine_kernel.c
> httpd/httpd/trunk/server/scoreboard.c
>
> Modified: httpd/httpd/trunk/include/scoreboard.h
> URL:
> http://svn.apache.org/viewvc/httpd/httpd/trunk/include/scoreboard.h?rev=1726009&r1=1726008&r2=1726009&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/include/scoreboard.h (original)
> +++ httpd/httpd/trunk/include/scoreboard.h Thu Jan 21 16:36:33 2016
> @@ -115,6 +115,7 @@ struct worker_score {
> char client[40]; /* Keep 'em small... but large enough to hold
> an IPv6 address */
> char request[64]; /* We just want an idea... */
> char vhost[32]; /* What virtual host is being accessed? */
> + char protocol[16]; /* What protocol is used on the connection?
> */
> };
>
> typedef struct {
> @@ -181,6 +182,10 @@ AP_DECLARE(int) ap_update_child_status(a
> AP_DECLARE(int) ap_update_child_status_from_indexes(int child_num, int
> thread_num,
> int status, request_rec
> *r);
> AP_DECLARE(int) ap_update_child_status_from_conn(ap_sb_handle_t *sbh, int
> status, conn_rec *c);
> +AP_DECLARE(int) ap_update_child_status_from_server(ap_sb_handle_t *sbh, int
> status,
> + conn_rec *c, server_rec
> *s);
> +AP_DECLARE(int) ap_update_child_status_descr(ap_sb_handle_t *sbh, int
> status, const char *descr);
> +
> AP_DECLARE(void) ap_time_process_request(ap_sb_handle_t *sbh, int status);
>
> AP_DECLARE(worker_score *) ap_get_scoreboard_worker(ap_sb_handle_t *sbh);
>
> Modified: httpd/httpd/trunk/modules/generators/mod_status.c
> URL:
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/generators/mod_status.c?rev=1726009&r1=1726008&r2=1726009&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/generators/mod_status.c (original)
> +++ httpd/httpd/trunk/modules/generators/mod_status.c Thu Jan 21 16:36:33 2016
> @@ -662,7 +662,7 @@ static int status_handler(request_rec *r
> #endif
> "<th>SS</th><th>Req</th>"
> "<th>Conn</th><th>Child</th><th>Slot</th>"
> - "<th>Client</th><th>VHost</th>"
> + "<th>Client</th><th>Protocol</th><th>VHost</th>"
> "<th>Request</th></tr>\n\n", r);
>
> for (i = 0; i < server_limit; ++i) {
> @@ -776,13 +776,15 @@ static int status_handler(request_rec *r
> format_byte_out(r, bytes);
> ap_rputs(")\n", r);
> ap_rprintf(r,
> - " <i>%s {%s}</i> <b>[%s]</b><br />\n\n",
> + " <i>%s {%s}</i> <i>(%s)</i> <b>[%s]</b><br
> />\n\n",
> ap_escape_html(r->pool,
> ws_record->client),
> ap_escape_html(r->pool,
> ap_escape_logitem(r->pool,
>
> ws_record->request)),
> ap_escape_html(r->pool,
> + ws_record->protocol),
> + ap_escape_html(r->pool,
> ws_record->vhost));
> }
> else { /* !no_table_report */
> @@ -860,11 +862,13 @@ static int status_handler(request_rec *r
> (float)conn_bytes / KBYTE, (float) my_bytes /
> MBYTE,
> (float)bytes / MBYTE);
>
> - ap_rprintf(r, "</td><td>%s</td><td nowrap>%s</td>"
> + ap_rprintf(r, "</td><td>%s</td><td>%s</td><td
> nowrap>%s</td>"
> "<td nowrap>%s</td></tr>\n\n",
> ap_escape_html(r->pool,
> ws_record->client),
> ap_escape_html(r->pool,
> + ws_record->protocol),
> + ap_escape_html(r->pool,
> ws_record->vhost),
> ap_escape_html(r->pool,
> ap_escape_logitem(r->pool,
>
> Modified: httpd/httpd/trunk/modules/ssl/ssl_engine_kernel.c
> URL:
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/ssl/ssl_engine_kernel.c?rev=1726009&r1=1726008&r2=1726009&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/ssl/ssl_engine_kernel.c (original)
> +++ httpd/httpd/trunk/modules/ssl/ssl_engine_kernel.c Thu Jan 21 16:36:33 2016
> @@ -31,6 +31,7 @@
> #include "ssl_private.h"
> #include "mod_ssl.h"
> #include "util_md5.h"
> +#include "scoreboard.h"
>
> static void ssl_configure_env(request_rec *r, SSLConnRec *sslconn);
> #ifdef HAVE_TLSEXT
> @@ -2218,6 +2219,7 @@ static int ssl_find_vhost(void *serverna
> sslcon->server = s;
> sslcon->cipher_suite = sc->server->auth.cipher_suite;
>
> + ap_update_child_status_from_server(c->sbh, SERVER_BUSY_READ, c, s);
> /*
> * There is one special filter callback, which is set
> * very early depending on the base_server's log level.
>
> Modified: httpd/httpd/trunk/server/scoreboard.c
> URL:
> http://svn.apache.org/viewvc/httpd/httpd/trunk/server/scoreboard.c?rev=1726009&r1=1726008&r2=1726009&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/server/scoreboard.c (original)
> +++ httpd/httpd/trunk/server/scoreboard.c Thu Jan 21 16:36:33 2016
> @@ -32,6 +32,7 @@
> #include "http_main.h"
> #include "http_core.h"
> #include "http_config.h"
> +#include "http_protocol.h"
> #include "ap_mpm.h"
>
> #include "scoreboard.h"
> @@ -457,7 +458,9 @@ static int update_child_status_internal(
> int thread_num,
> int status,
> conn_rec *c,
> - request_rec *r)
> + server_rec *s,
> + request_rec *r,
> + const char *descr)
> {
> int old_status;
> worker_score *ws;
> @@ -466,18 +469,22 @@ static int update_child_status_internal(
>
> ws = &ap_scoreboard_image->servers[child_num][thread_num];
> old_status = ws->status;
> - ws->status = status;
> -
> - ps = &ap_scoreboard_image->parent[child_num];
> -
> - if (status == SERVER_READY
> - && old_status == SERVER_STARTING) {
> - ws->thread_num = child_num * thread_limit + thread_num;
> - ap_mpm_query(AP_MPMQ_GENERATION, &mpm_generation);
> - ps->generation = mpm_generation;
> + if (status >= 0) {
> + ws->status = status;
> +
> + ps = &ap_scoreboard_image->parent[child_num];
> +
> + if (status == SERVER_READY
> + && old_status == SERVER_STARTING) {
> + ws->thread_num = child_num * thread_limit + thread_num;
> + ap_mpm_query(AP_MPMQ_GENERATION, &mpm_generation);
> + ps->generation = mpm_generation;
> + }
> }
>
> if (ap_extended_status) {
> + const char *val;
> +
> if (status == SERVER_READY || status == SERVER_DEAD) {
> /*
> * Reset individual counters
> @@ -490,27 +497,42 @@ static int update_child_status_internal(
> ws->conn_bytes = 0;
> ws->last_used = apr_time_now();
> }
> - if (r) {
> - const char *client = ap_get_remote_host(c, r->per_dir_config,
> - REMOTE_NOLOOKUP, NULL);
> - if (!client || !strcmp(client, c->client_ip)) {
> - apr_cpystrn(ws->client, r->useragent_ip, sizeof(ws->client));
> + if (status == SERVER_READY) {
> + ws->client[0]='\0';
> + ws->vhost[0]='\0';
> + ws->request[0]='\0';
> + ws->protocol[0]='\0';
> + }
> + else {
> + if (descr) {
> + apr_cpystrn(ws->request, descr, sizeof(ws->request));
> }
> - else {
> - apr_cpystrn(ws->client, client, sizeof(ws->client));
> + else if (r) {
> + copy_request(ws->request, sizeof(ws->request), r);
> }
> - copy_request(ws->request, sizeof(ws->request), r);
> - if (r->server) {
> - apr_snprintf(ws->vhost, sizeof(ws->vhost), "%s:%d",
> - r->server->server_hostname,
> - r->connection->local_addr->port);
> + if (r || c) {
> + val = ap_get_remote_host(c, r? r->per_dir_config : NULL,
> + REMOTE_NOLOOKUP, NULL);
> + if (r && (!val || !strcmp(val, c->client_ip))) {
> + apr_cpystrn(ws->client, r->useragent_ip,
> sizeof(ws->client));
> + }
> + else {
> + apr_cpystrn(ws->client, val, sizeof(ws->client));
> + }
> + }
> + if (s) {
> + if (c) {
> + apr_snprintf(ws->vhost, sizeof(ws->vhost), "%s:%d",
> + s->server_hostname, c->local_addr->port);
> + }
> + else {
> + apr_cpystrn(ws->vhost, s->server_hostname,
> sizeof(ws->vhost));
> + }
> + }
> + if (c) {
> + val = ap_get_protocol(c);
> + apr_cpystrn(ws->protocol, val, sizeof(ws->protocol));
> }
> - }
> - else if (c) {
> - apr_cpystrn(ws->client, ap_get_remote_host(c, NULL,
> - REMOTE_NOLOOKUP, NULL), sizeof(ws->client));
> - ws->request[0]='\0';
> - ws->vhost[0]='\0';
> }
> }
>
> @@ -528,7 +550,8 @@ AP_DECLARE(int) ap_update_child_status_f
>
> return update_child_status_internal(child_num, thread_num, status,
> r ? r->connection : NULL,
> - r);
> + r ? r->server : NULL,
> + r, NULL);
> }
>
> AP_DECLARE(int) ap_update_child_status(ap_sb_handle_t *sbh, int status,
> @@ -540,17 +563,37 @@ AP_DECLARE(int) ap_update_child_status(a
> return update_child_status_internal(sbh->child_num, sbh->thread_num,
> status,
> r ? r->connection : NULL,
> - r);
> + r ? r->server : NULL,
> + r, NULL);
> }
>
> AP_DECLARE(int) ap_update_child_status_from_conn(ap_sb_handle_t *sbh, int
> status,
> - conn_rec *c)
> + conn_rec *c)
> +{
> + if (!sbh || (sbh->child_num < 0))
> + return -1;
> +
> + return update_child_status_internal(sbh->child_num, sbh->thread_num,
> + status, c, NULL, NULL, NULL);
> +}
> +
> +AP_DECLARE(int) ap_update_child_status_from_server(ap_sb_handle_t *sbh, int
> status,
> + conn_rec *c, server_rec
> *s)
> +{
> + if (!sbh || (sbh->child_num < 0))
> + return -1;
> +
> + return update_child_status_internal(sbh->child_num, sbh->thread_num,
> + status, c, s, NULL, NULL);
> +}
> +
> +AP_DECLARE(int) ap_update_child_status_descr(ap_sb_handle_t *sbh, int
> status, const char *descr)
> {
> if (!sbh || (sbh->child_num < 0))
> return -1;
>
> return update_child_status_internal(sbh->child_num, sbh->thread_num,
> - status, c, NULL);
> + status, NULL, NULL, NULL, descr);
> }
>
> AP_DECLARE(void) ap_time_process_request(ap_sb_handle_t *sbh, int status)
> @@ -605,6 +648,7 @@ AP_DECLARE(void) ap_copy_scoreboard_work
> dest->client[sizeof(dest->client) - 1] = '\0';
> dest->request[sizeof(dest->request) - 1] = '\0';
> dest->vhost[sizeof(dest->vhost) - 1] = '\0';
> + dest->protocol[sizeof(dest->protocol) - 1] = '\0';
> }
>
> AP_DECLARE(process_score *) ap_get_scoreboard_process(int x)
>
>