--- jk_lb_worker.c	Tue Dec 12 15:51:56 2000
+++ ../jk_lb_worker.c	Wed Jan  3 15:09:18 2001
@@ -84,8 +84,10 @@
     double  lb_value;
     int     in_error_state;
     int     in_recovering;
+    int     in_active_state;
     time_t  error_time;
     jk_worker_t *w;
+  
 };
 typedef struct worker_record worker_record_t;
 
@@ -264,6 +266,8 @@
     }
 
     for(i = 0 ; i < p->num_of_workers ; i++) {
+      
+     if (p->lb_workers[i].in_active_state){
         if(p->lb_workers[i].in_error_state) {
             if(!p->lb_workers[i].in_recovering) {
                 time_t now = time(0);
@@ -284,6 +288,7 @@
             }
         }            
     }
+    }
 
     if(rc) {
         rc->lb_value += rc->lb_factor;                
@@ -425,6 +430,8 @@
                 p->lb_workers[i].name = jk_pool_strdup(&p->p, worker_names[i]);
                 p->lb_workers[i].lb_factor = jk_get_lb_factor(props, 
                                                                worker_names[i]);
+                p->lb_workers[i].in_active_state = jk_get_in_active_state(props, 
+                                                                          worker_names[i]);
                 p->lb_workers[i].lb_factor = 1/p->lb_workers[i].lb_factor;
                 p->lb_workers[i].lb_value = 0.0;
                 p->lb_workers[i].in_error_state = JK_FALSE;
--- jk_util.c	Tue Dec 12 15:51:56 2000
+++ ../jk_util.c	Wed Jan  3 15:13:07 2001
@@ -79,6 +79,7 @@
 #define TYPE_OF_WORKER              ("type")
 #define CACHE_OF_WORKER             ("cachesize")
 #define LOAD_FACTOR_OF_WORKER       ("lbfactor")
+#define ACTIVE_STATE_OF_WORKER      ("active")
 #define BALANCED_WORKERS            ("balanced_workers")
 #define WORKER_AJP12                ("ajp12")
 #define DEFAULT_WORKER_TYPE         JK_AJP12_WORKER_NAME
@@ -86,7 +87,7 @@
 #define DEFAULT_WORKER              JK_AJP12_WORKER_NAME
 #define WORKER_LIST_PROPERTY_NAME   ("worker.list")
 #define DEFAULT_LB_FACTOR           (1.0)
-
+#define DEFAULT_IN_ACTIVE_STATE     (1)
 #define HUGE_BUFFER_SIZE (8*1024)
 #define LOG_LINE_SIZE    (1024)
 
@@ -364,6 +365,20 @@
     sprintf(buf, "%s.%s.%s", PREFIX_OF_WORKER, wname, LOAD_FACTOR_OF_WORKER);
 
     return map_get_double(m, buf, DEFAULT_LB_FACTOR);
+}
+
+int jk_get_in_active_state(jk_map_t *m, 
+                        const char *wname)
+{
+    char buf[1024];
+    
+    if(!m || !wname) {
+        return DEFAULT_IN_ACTIVE_STATE;
+    }
+
+    sprintf(buf, "%s.%s.%s", PREFIX_OF_WORKER, wname, ACTIVE_STATE_OF_WORKER);
+
+    return map_get_int(m, buf, DEFAULT_IN_ACTIVE_STATE);
 }
 
 int jk_get_lb_worker_list(jk_map_t *m, 
--- jk_util.h	Tue Dec 12 15:51:56 2000
+++ ../jk_util.h	Wed Jan  3 15:13:40 2001
@@ -114,6 +114,9 @@
 double jk_get_lb_factor(jk_map_t *m, 
                         const char *wname);
 
+int jk_get_in_active_state(jk_map_t *m, 
+                           const char *wname);
+
 int jk_get_lb_worker_list(jk_map_t *m, 
                           const char *lb_wname,
                           char ***list, 

