Ah, of course, just a moment...

> Am 21.01.2016 um 17:54 schrieb Jim Jagielski <[email protected]>:
> 
> 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