MINOR: config: simplify bind_proc processing using proc_mask()
At a number of places we used to have null tests on bind_proc for
listeners and proxies. Let's simplify all these tests by always
having the proper bits reported via proc_mask().
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 441f4a6..917fe0c 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -2286,10 +2286,7 @@
#endif
/* detect and address thread affinity inconsistencies */
- nbproc = 0;
- if (bind_conf->bind_proc)
- nbproc = my_ffsl(bind_conf->bind_proc) - 1;
-
+ nbproc = my_ffsl(proc_mask(bind_conf->bind_proc)) - 1;
mask = bind_conf->bind_thread[nbproc];
if (mask && !(mask & all_threads_mask)) {
unsigned long new_mask = 0;
@@ -2311,9 +2308,7 @@
if (!bind_conf->bind_proc)
continue;
- mask = all_proc_mask;
- if (curproxy->bind_proc)
- mask &= curproxy->bind_proc;
+ mask = proc_mask(curproxy->bind_proc) & all_proc_mask;
/* mask cannot be null here thanks to the previous checks */
nbproc = my_popcountl(bind_conf->bind_proc);
@@ -3550,12 +3545,8 @@
list_for_each_entry(bind_conf, &global.stats_fe->conf.bind, by_fe) {
unsigned long mask;
- mask = all_proc_mask;
- if (global.stats_fe->bind_proc)
- mask &= global.stats_fe->bind_proc;
-
- if (bind_conf->bind_proc)
- mask &= bind_conf->bind_proc;
+ mask = proc_mask(global.stats_fe->bind_proc) && all_proc_mask;
+ mask &= proc_mask(bind_conf->bind_proc);
/* stop here if more than one process is used */
if (atleast2(mask))
@@ -3574,12 +3565,10 @@
list_for_each_entry(bind_conf, &curproxy->conf.bind, by_fe) {
unsigned long mask;
- mask = bind_conf->bind_proc ? bind_conf->bind_proc : all_proc_mask;
+ mask = proc_mask(bind_conf->bind_proc);
curproxy->bind_proc |= mask;
}
-
- if (!curproxy->bind_proc)
- curproxy->bind_proc = all_proc_mask;
+ curproxy->bind_proc = proc_mask(curproxy->bind_proc);
}
if (global.stats_fe) {
@@ -3589,8 +3578,7 @@
mask = bind_conf->bind_proc ? bind_conf->bind_proc : 0;
global.stats_fe->bind_proc |= mask;
}
- if (!global.stats_fe->bind_proc)
- global.stats_fe->bind_proc = all_proc_mask;
+ global.stats_fe->bind_proc = proc_mask(global.stats_fe->bind_proc);
}
/* propagate bindings from frontends to backends. Don't do it if there
@@ -3604,11 +3592,8 @@
}
/* Bind each unbound backend to all processes when not specified. */
- for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
- if (curproxy->bind_proc)
- continue;
- curproxy->bind_proc = all_proc_mask;
- }
+ for (curproxy = proxies_list; curproxy; curproxy = curproxy->next)
+ curproxy->bind_proc = proc_mask(curproxy->bind_proc);
/*******************************************************/
/* At this step, all proxies have a non-null bind_proc */
diff --git a/src/listener.c b/src/listener.c
index 40419d5..cb8cbda 100644
--- a/src/listener.c
+++ b/src/listener.c
@@ -63,8 +63,7 @@
HA_SPIN_LOCK(LISTENER_LOCK, &listener->lock);
if (listener->state == LI_LISTEN) {
if ((global.mode & (MODE_DAEMON | MODE_MWORKER)) &&
- listener->bind_conf->bind_proc &&
- !(listener->bind_conf->bind_proc & pid_bit)) {
+ !(proc_mask(listener->bind_conf->bind_proc) & pid_bit)) {
/* we don't want to enable this listener and don't
* want any fd event to reach it.
*/
@@ -173,8 +172,7 @@
HA_SPIN_LOCK(LISTENER_LOCK, &l->lock);
if ((global.mode & (MODE_DAEMON | MODE_MWORKER)) &&
- l->bind_conf->bind_proc &&
- !(l->bind_conf->bind_proc & pid_bit))
+ !(proc_mask(l->bind_conf->bind_proc) & pid_bit))
goto end;
if (l->state == LI_ASSIGNED) {
diff --git a/src/proxy.c b/src/proxy.c
index 7721008..78e099e 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -1598,7 +1598,7 @@
char *srvrecord;
/* we don't want to report any state if the backend is not enabled on this process */
- if (px->bind_proc && !(px->bind_proc & pid_bit))
+ if (!(proc_mask(px->bind_proc) & pid_bit))
return 1;
if (!appctx->ctx.cli.p1)
@@ -1719,7 +1719,7 @@
continue;
/* we don't want to list a backend which is bound to this process */
- if (curproxy->bind_proc && !(curproxy->bind_proc & pid_bit))
+ if (!(proc_mask(curproxy->bind_proc) & pid_bit))
continue;
chunk_appendf(&trash, "%s\n", curproxy->id);