return 0;
}
+/* This function propagates srv state change to lb algorithms */
+static void srv_lb_propagate(struct server *s)
+{
+ struct proxy *px = s->proxy;
+
+ if (px->lbprm.update_server_eweight)
+ px->lbprm.update_server_eweight(s);
+ else if (srv_willbe_usable(s)) {
+ if (px->lbprm.set_server_status_up)
+ px->lbprm.set_server_status_up(s);
+ }
+ else {
+ if (px->lbprm.set_server_status_down)
+ px->lbprm.set_server_status_down(s);
+ }
+}
+
/*
* This function applies server's status changes.
*
server_recalc_eweight(s, 0);
/* now propagate the status change to any LB algorithms */
- if (px->lbprm.update_server_eweight)
- px->lbprm.update_server_eweight(s);
- else if (srv_willbe_usable(s)) {
- if (px->lbprm.set_server_status_up)
- px->lbprm.set_server_status_up(s);
- }
- else {
- if (px->lbprm.set_server_status_down)
- px->lbprm.set_server_status_down(s);
- }
+ srv_lb_propagate(s);
/* If the server is set with "on-marked-up shutdown-backup-sessions",
* and it's not a backup server and its effective weight is > 0,
}
else if (s->cur_eweight != s->next_eweight) {
/* now propagate the status change to any LB algorithms */
- if (px->lbprm.update_server_eweight)
- px->lbprm.update_server_eweight(s);
- else if (srv_willbe_usable(s)) {
- if (px->lbprm.set_server_status_up)
- px->lbprm.set_server_status_up(s);
- }
- else {
- if (px->lbprm.set_server_status_down)
- px->lbprm.set_server_status_down(s);
- }
+ srv_lb_propagate(s);
}
s->next_admin = next_admin;
server_recalc_eweight(s, 0);
/* now propagate the status change to any LB algorithms */
- if (px->lbprm.update_server_eweight)
- px->lbprm.update_server_eweight(s);
- else if (srv_willbe_usable(s)) {
- if (px->lbprm.set_server_status_up)
- px->lbprm.set_server_status_up(s);
- }
- else {
- if (px->lbprm.set_server_status_down)
- px->lbprm.set_server_status_down(s);
- }
+ srv_lb_propagate(s);
/* If the server is set with "on-marked-up shutdown-backup-sessions",
* and it's not a backup server and its effective weight is > 0,
}
/* now propagate the status change to any LB algorithms */
- if (px->lbprm.update_server_eweight)
- px->lbprm.update_server_eweight(s);
- else if (srv_willbe_usable(s)) {
- if (px->lbprm.set_server_status_up)
- px->lbprm.set_server_status_up(s);
- }
- else {
- if (px->lbprm.set_server_status_down)
- px->lbprm.set_server_status_down(s);
- }
+ srv_lb_propagate(s);
}
else if ((s->next_admin & SRV_ADMF_DRAIN)) {
/* remaining in drain mode after removing one of its flags */