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)
> 
> 

Reply via email to