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]