From: Mladen Turk Date: Sun, 26 Sep 2004 18:17:38 +0000 (+0000) Subject: Initialize workers for every virtual server not just for default one. X-Git-Tag: 2.1.1~203 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=349fbd8eb197def689a1f68d853f744577cd0f76;p=apache Initialize workers for every virtual server not just for default one. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@105298 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c index 10a728b32b..c5bf0712b4 100644 --- a/modules/proxy/mod_proxy.c +++ b/modules/proxy/mod_proxy.c @@ -1772,27 +1772,30 @@ static int proxy_status_hook(request_rec *r, int flags) static void child_init(apr_pool_t *p, server_rec *s) { - void *sconf = s->module_config; - proxy_server_conf *conf = (proxy_server_conf *) - ap_get_module_config(sconf, &proxy_module); - proxy_worker *worker; - int i; - /* Initialize worker's shared scoreboard data */ - worker = (proxy_worker *)conf->workers->elts; - for (i = 0; i < conf->workers->nelts; i++) { - ap_proxy_initialize_worker_share(conf, worker); - ap_proxy_initialize_worker(worker, s); - worker++; - } - /* Initialize forward worker if defined */ - if (conf->forward) { - ap_proxy_initialize_worker_share(conf, conf->forward); - ap_proxy_initialize_worker(conf->forward, s); - /* Do not disable worker in case of errors */ - conf->forward->s->status |= PROXY_WORKER_IGNORE_ERRORS; + while (s) { + void *sconf = s->module_config; + proxy_server_conf *conf; + proxy_worker *worker; + int i; + + conf = (proxy_server_conf *)ap_get_module_config(sconf, &proxy_module); + /* Initialize worker's shared scoreboard data */ + worker = (proxy_worker *)conf->workers->elts; + for (i = 0; i < conf->workers->nelts; i++) { + ap_proxy_initialize_worker_share(conf, worker); + ap_proxy_initialize_worker(worker, s); + worker++; + } + /* Initialize forward worker if defined */ + if (conf->forward) { + ap_proxy_initialize_worker_share(conf, conf->forward); + ap_proxy_initialize_worker(conf->forward, s); + /* Do not disable worker in case of errors */ + conf->forward->s->status |= PROXY_WORKER_IGNORE_ERRORS; + } + s = s->next; } - } /* diff --git a/modules/proxy/proxy_balancer.c b/modules/proxy/proxy_balancer.c index 5deea4c480..73540d2454 100644 --- a/modules/proxy/proxy_balancer.c +++ b/modules/proxy/proxy_balancer.c @@ -776,17 +776,20 @@ static int balancer_handler(request_rec *r) static void child_init(apr_pool_t *p, server_rec *s) { - void *sconf = s->module_config; - proxy_server_conf *conf = (proxy_server_conf *) - ap_get_module_config(sconf, &proxy_module); - proxy_balancer *balancer; - int i; + while (s) { + void *sconf = s->module_config; + proxy_server_conf *conf; + proxy_balancer *balancer; + int i; + conf = (proxy_server_conf *)ap_get_module_config(sconf, &proxy_module); - /* Initialize shared scoreboard data */ - balancer = (proxy_balancer *)conf->balancers->elts; - for (i = 0; i < conf->balancers->nelts; i++) { - init_runtime_score(conf, balancer); - balancer++; + /* Initialize shared scoreboard data */ + balancer = (proxy_balancer *)conf->balancers->elts; + for (i = 0; i < conf->balancers->nelts; i++) { + init_runtime_score(conf, balancer); + balancer++; + } + s = s->next; } }