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