I think this went in as a major bump, but I think it only needed a minor. Probably not intentional because major would not be backportable.
Anyone elses 2c and I'll flip it? On Thu, Jan 21, 2016 at 11:57 AM, Stefan Eissing <[email protected]> wrote: > 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) >> -- Eric Covener [email protected]
