From: Willy Tarreau Date: Fri, 1 May 2015 17:09:08 +0000 (+0200) Subject: MEDIUM: config: initialize stick-tables after peers, not before X-Git-Tag: v1.6-dev2~158 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6866f3f33f970989843a1dddb71489d9b1ad3e28;p=thirdparty%2Fhaproxy.git 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 ce0517c6a1..1470ceaf98 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -7871,20 +7871,6 @@ out_uri_auth_compat: } } - /* 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 @@ out_uri_auth_compat: } } + /* 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;