From: Yann Ylavic Date: Thu, 14 Apr 2016 18:03:58 +0000 (+0000) Subject: scoreboard/status: follow up to r1739008. X-Git-Tag: 2.5.0-alpha~1740 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f31bfa756794d6f0f3a525c3a009051294fc85be;p=apache scoreboard/status: follow up to r1739008. Restore (completely) pre-2.4.20 behaviour w.r.t. preserved values. r1739008 was still unnessessarily blanking some values for the time of BUSY_READ -> BUSY_WRITE (with blocking MPMs). git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1739146 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/server/scoreboard.c b/server/scoreboard.c index af2e9d1f4c..c8264302a1 100644 --- a/server/scoreboard.c +++ b/server/scoreboard.c @@ -464,22 +464,18 @@ static int update_child_status_internal(int child_num, { int old_status; worker_score *ws; - process_score *ps; int mpm_generation; ws = &ap_scoreboard_image->servers[child_num][thread_num]; old_status = ws->status; - 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; - } + ws->status = status; + + if (status == SERVER_READY + && old_status == SERVER_STARTING) { + process_score *ps = &ap_scoreboard_image->parent[child_num]; + 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) { @@ -499,57 +495,41 @@ static int update_child_status_internal(int child_num, } /* Keep existing values until working again */ - if (status > SERVER_READY) { - int was_ready = (old_status == SERVER_READY); - - if (descr) { - apr_cpystrn(ws->request, descr, sizeof(ws->request)); - } - else if (r) { - copy_request(ws->request, sizeof(ws->request), r); - } - else if (was_ready) { - ws->request[0] = '\0'; - } - - if (r) { - if (!(val = ap_get_useragent_host(r, REMOTE_NOLOOKUP, NULL))) - apr_cpystrn(ws->client, r->useragent_ip, sizeof(ws->client)); - else - apr_cpystrn(ws->client, val, sizeof(ws->client)); - } - else if (c) { - if (!(val = ap_get_remote_host(c, c->base_server->lookup_defaults, - REMOTE_NOLOOKUP, NULL))) - apr_cpystrn(ws->client, c->client_ip, sizeof(ws->client)); - else - apr_cpystrn(ws->client, val, sizeof(ws->client)); - } - else if (was_ready) { - ws->client[0] = '\0'; - } + if (descr) { + apr_cpystrn(ws->request, descr, sizeof(ws->request)); + } + else if (r) { + copy_request(ws->request, sizeof(ws->request), r); + } - 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)); - } - } - else if (was_ready) { - ws->vhost[0] = '\0'; - } + if (r) { + if (!(val = ap_get_useragent_host(r, REMOTE_NOLOOKUP, NULL))) + apr_cpystrn(ws->client, r->useragent_ip, sizeof(ws->client)); + else + apr_cpystrn(ws->client, val, sizeof(ws->client)); + } + else if (c) { + if (!(val = ap_get_remote_host(c, c->base_server->lookup_defaults, + REMOTE_NOLOOKUP, NULL))) + apr_cpystrn(ws->client, c->client_ip, sizeof(ws->client)); + else + apr_cpystrn(ws->client, val, sizeof(ws->client)); + } + if (s) { if (c) { - val = ap_get_protocol(c); - apr_cpystrn(ws->protocol, val, sizeof(ws->protocol)); + apr_snprintf(ws->vhost, sizeof(ws->vhost), "%s:%d", + s->server_hostname, c->local_addr->port); } - else if (was_ready) { - ws->protocol[0] = '\0'; + 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)); + } } return old_status;