MEDIUM: config: initialize stick-tables after peers, not before
It's dangerous to initialize stick-tables before peers because they
start a task that cannot be stopped before we know if the peers need
to be disabled and destroyed. Move this after.
diff --git a/src/cfgparse.c b/src/cfgparse.c
index ce0517c..1470cea 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -7871,20 +7871,6 @@
}
}
- /* initialize stick-tables on backend capable proxies. This must not
- * be done earlier because the data size may be discovered while parsing
- * other proxies.
- */
- for (curproxy = proxy; curproxy; curproxy = curproxy->next) {
- if (curproxy->state == PR_STSTOPPED)
- continue;
-
- if (!stktable_init(&curproxy->table)) {
- Alert("Proxy '%s': failed to initialize stick-table.\n", curproxy->id);
- cfgerr++;
- }
- }
-
/*
* Recount currently required checks.
*/
@@ -7938,6 +7924,20 @@
}
}
+ /* initialize stick-tables on backend capable proxies. This must not
+ * be done earlier because the data size may be discovered while parsing
+ * other proxies.
+ */
+ for (curproxy = proxy; curproxy; curproxy = curproxy->next) {
+ if (curproxy->state == PR_STSTOPPED)
+ continue;
+
+ if (!stktable_init(&curproxy->table)) {
+ Alert("Proxy '%s': failed to initialize stick-table.\n", curproxy->id);
+ cfgerr++;
+ }
+ }
+
if (mailers) {
struct mailers *curmailers = mailers, **last;
struct mailer *m, *mb;