int curfd; /* file desc used for current test, or -1 if not in test */
char *id; /* just for identification */
- unsigned char uweight, eweight; /* user-specified weight-1, and effective weight-1 */
- unsigned int wscore; /* weight score, used during srv map computation */
+ unsigned uweight, eweight; /* user-specified weight, and effective weight */
+ unsigned wscore; /* weight score, used during srv map computation */
unsigned failed_checks, down_trans; /* failed checks and up-down transitions */
unsigned failed_conns, failed_resp; /* failed connect() and responses */
if (srv->state & SRV_RUNNING) {
if (srv->state & SRV_BACKUP) {
px->srv_bck++;
- px->tot_wbck += srv->eweight + 1;
+ px->tot_wbck += srv->eweight;
} else {
px->srv_act++;
- px->tot_wact += srv->eweight + 1;
+ px->tot_wact += srv->eweight;
}
}
}
break;
}
- cur->wscore += cur->eweight + 1;
+ cur->wscore += cur->eweight;
v = (cur->wscore + tot) / tot; /* result between 0 and 3 */
if (best == NULL || v > max) {
max = v;
newsrv->rise = DEF_RISETIME;
newsrv->fall = DEF_FALLTIME;
newsrv->health = newsrv->rise; /* up, but will fall down at first failure */
+ newsrv->uweight = 1;
cur_arg = 3;
while (*args[cur_arg]) {
file, linenum, newsrv->id, w);
return -1;
}
- newsrv->uweight = w - 1;
+ newsrv->uweight = w;
cur_arg += 2;
}
else if (!strcmp(args[cur_arg], "minconn")) {
/* We will factor the weights to reduce the table,
* using Euclide's largest common divisor algorithm
*/
- pgcd = newsrv->uweight + 1;
+ pgcd = newsrv->uweight;
for (srv = newsrv->next; srv && pgcd > 1; srv = srv->next) {
int t, w;
- w = srv->uweight + 1;
+ w = srv->uweight;
while (w) {
t = pgcd % w;
pgcd = w;
act = bck = 0;
for (srv = newsrv; srv; srv = srv->next) {
- srv->eweight = ((srv->uweight + 1) / pgcd) - 1;
+ srv->eweight = srv->uweight / pgcd;
if (srv->state & SRV_BACKUP)
- bck += srv->eweight + 1;
+ bck += srv->eweight;
else
- act += srv->eweight + 1;
+ act += srv->eweight;
}
/* this is the largest map we will ever need for this servers list */
/* act, bck */
"<td>%s</td><td>%s</td>"
"",
- sv->uweight+1,
+ sv->uweight,
(sv->state & SRV_BACKUP) ? "-" : "Y",
(sv->state & SRV_BACKUP) ? "Y" : "-");