truk        2004/03/08 15:01:07

  Modified:    jk/native2/common jk_worker_lb.c
  Log:
  Fix bug 23483
  
  Only add worker to the workerTable if it is not already there.
  Add check for maximum workers too.
  
  Revision  Changes    Path
  1.38      +21 -5     jakarta-tomcat-connectors/jk/native2/common/jk_worker_lb.c
  
  Index: jk_worker_lb.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_lb.c,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- jk_worker_lb.c    27 Feb 2004 08:34:18 -0000      1.37
  +++ jk_worker_lb.c    8 Mar 2004 23:01:06 -0000       1.38
  @@ -448,7 +448,8 @@
           char *name = lb->lbWorkerMap->nameAt( env, lb->lbWorkerMap, i);
           jk_worker_t *w= env->getByName( env, name );
           int level=0;
  -        int pos=0;
  +        int pos;
  +        int workerCnt;
   
           if( w== NULL ) {
               env->l->jkLog(env, env->l, JK_LOG_ERROR,
  @@ -463,12 +464,27 @@
           /* It's like disabled */
           if( level >= JK_LB_LEVELS ) continue;
   
  -        pos=lb->workerCnt[level]++;
  +        /* check if worker is already in the table */
  +        workerCnt = lb->workerCnt[level];
  +        for(pos = 0 ; pos < workerCnt ; pos++) {
  +            if( lb->workerTables[level][pos] == w ) {
  +                break;
  +            }
  +        }
  +
  +        if( pos == workerCnt ) {
  +            if( pos == JK_LB_MAX_WORKERS ) {
  +                env->l->jkLog(env, env->l, JK_LOG_ERROR,
  +                              "lb_worker.init(): maximum lb workers reached %s\n", 
name);
  +                continue;
  +            }
  +            pos=lb->workerCnt[level]++;
           
  -        lb->workerTables[level][pos]=w;
  +            lb->workerTables[level][pos]=w;
   
  -        w->lb_value = w->lb_factor;
  -        w->in_error_state = JK_FALSE;
  +            w->lb_value = w->lb_factor;
  +            w->in_error_state = JK_FALSE;
  +        }
       }
       
       return JK_OK;
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to