Index: modules/proxy/mod_proxy_balancer.c
===================================================================
--- modules/proxy/mod_proxy_balancer.c	(revision 574186)
+++ modules/proxy/mod_proxy_balancer.c	(working copy)
@@ -86,22 +86,23 @@
 {
     int i;
     proxy_worker *workers;
+    int worker_is_initialized;
 
     workers = (proxy_worker *)balancer->workers->elts;
 
     for (i = 0; i < balancer->workers->nelts; i++) {
-        ap_proxy_initialize_worker_share(conf, workers, s);
+        worker_is_initialized = ap_proxy_initialize_worker_share(conf,
+                                                                 workers, s);
         ap_proxy_initialize_worker(workers, s);
+        if (!worker_is_initialized) {
+            /* Set to the original configuration */
+            workers->s->lbstatus = workers->s->lbfactor =
+            (workers->lbfactor ? workers->lbfactor : 1);
+            workers->s->lbset = workers->lbset;
+        }
         ++workers;
     }
 
-    workers = (proxy_worker *)balancer->workers->elts;
-    for (i = 0; i < balancer->workers->nelts; i++) {
-        /* Set to the original configuration */
-        workers[i].s->lbstatus = workers[i].s->lbfactor =
-          (workers[i].lbfactor ? workers[i].lbfactor : 1);
-        workers[i].s->lbset = workers[i].lbset;
-    }
     /* Set default number of attempts to the number of
      * workers.
      */
Index: modules/proxy/proxy_util.c
===================================================================
--- modules/proxy/proxy_util.c	(revision 574186)
+++ modules/proxy/proxy_util.c	(working copy)
@@ -1665,9 +1665,9 @@
  * with initializing those parts of worker which
  * are, or could be, shared. Basically worker->s
  */
-PROXY_DECLARE(void) ap_proxy_initialize_worker_share(proxy_server_conf *conf,
-                                                     proxy_worker *worker,
-                                                     server_rec *s)
+PROXY_DECLARE(int) ap_proxy_initialize_worker_share(proxy_server_conf *conf,
+                                                    proxy_worker *worker,
+                                                    server_rec *s)
 {
     lb_score *score = NULL;
 
@@ -1676,7 +1676,7 @@
         ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s,
               "proxy: worker %s already initialized",
               worker->name);
-        return;
+        return 1;
     }
     /* Get scoreboard slot */
     if (ap_scoreboard_image) {
@@ -1708,7 +1708,7 @@
         ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s,
               "proxy: worker %s already initialized",
               worker->name);
-        return;
+        return 1;
     }
     if (worker->route) {
         strcpy(worker->s->route, worker->route);
@@ -1724,6 +1724,7 @@
     }
 
     worker->s->status |= (worker->status | PROXY_WORKER_INITIALIZED);
+    return 0;
 
 }
 
Index: modules/proxy/mod_proxy.h
===================================================================
--- modules/proxy/mod_proxy.h	(revision 574186)
+++ modules/proxy/mod_proxy.h	(working copy)
@@ -540,10 +540,11 @@
  * @param worker worker to initialize
  * @param s      current server record
  * @param worker worker to initialize
+ * @return       boolean value whether the worker was already initialized before the call
  */
-PROXY_DECLARE(void) ap_proxy_initialize_worker_share(proxy_server_conf *conf,
-                                                     proxy_worker *worker,
-                                                     server_rec *s);
+PROXY_DECLARE(int) ap_proxy_initialize_worker_share(proxy_server_conf *conf,
+                                                    proxy_worker *worker,
+                                                    server_rec *s);
 
 
 /**
Index: include/ap_mmn.h
===================================================================
--- include/ap_mmn.h	(revision 574186)
+++ include/ap_mmn.h	(working copy)
@@ -132,13 +132,15 @@
  * 20060905.5 (2.3.0-dev)  Added ap_mpm_safe_kill()
  * 20070823.0 (2.3.0-dev)  Removed ap_all_available_mutexes_string,
  *                         ap_available_mutexes_string for macros
+ * 20070910.0 (2.3.0-dev)  Changed the return value of
+ *                         ap_proxy_initialize_worker_share from void to int.
  *
  */
 
 #define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
 
 #ifndef MODULE_MAGIC_NUMBER_MAJOR
-#define MODULE_MAGIC_NUMBER_MAJOR 20070823
+#define MODULE_MAGIC_NUMBER_MAJOR 20070910
 #endif
 #define MODULE_MAGIC_NUMBER_MINOR 0                    /* 0...n */
 
