]> granicus.if.org Git - apache/commitdiff
Initialize workers for every virtual server not just for default one.
authorMladen Turk <mturk@apache.org>
Sun, 26 Sep 2004 18:17:38 +0000 (18:17 +0000)
committerMladen Turk <mturk@apache.org>
Sun, 26 Sep 2004 18:17:38 +0000 (18:17 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@105298 13f79535-47bb-0310-9956-ffa450edef68

modules/proxy/mod_proxy.c
modules/proxy/proxy_balancer.c

index 10a728b32b0238329e297272ca9d9a3804acfb6a..c5bf0712b44e287818838b8a29ce9fd32a183c39 100644 (file)
@@ -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;
     }
-
 }
 
 /*
index 5deea4c480808055f391e70d08614957f78d4ebb..73540d24548a1a2e511ad43d61634ae2e75ecb32 100644 (file)
@@ -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;
     }
 
 }