mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-20 21:31:28 +02:00
MINOR: haproxy: abort config parsing on fatal errors for post parsing hooks
When pre-check and post-check postparsing hooks= are evaluated in step_init_2() potential fatal errors are ignored during the iteration and are only taken into account at the end of the loop. This is not ideal because some errors (ie: memory errors) could cause multiple alert messages in a row, which could make troubleshooting harder for the user. Let's stop as soon as a fatal error is encountered for post parsing hooks, as we use to do everywhere else.
This commit is contained in:
parent
49db9739d0
commit
9736221e90
@ -2061,12 +2061,12 @@ static void step_init_2(int argc, char** argv)
|
|||||||
/* destroy unreferenced defaults proxies */
|
/* destroy unreferenced defaults proxies */
|
||||||
proxy_destroy_all_unref_defaults();
|
proxy_destroy_all_unref_defaults();
|
||||||
|
|
||||||
list_for_each_entry(prcf, &pre_check_list, list)
|
list_for_each_entry(prcf, &pre_check_list, list) {
|
||||||
err_code |= prcf->fct();
|
err_code |= prcf->fct();
|
||||||
|
if (err_code & (ERR_ABORT|ERR_FATAL)) {
|
||||||
if (err_code & (ERR_ABORT|ERR_FATAL)) {
|
ha_alert("Fatal errors found in configuration.\n");
|
||||||
ha_alert("Fatal errors found in configuration.\n");
|
exit(1);
|
||||||
exit(1);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* update the ready date that will be used to count the startup time
|
/* update the ready date that will be used to count the startup time
|
||||||
@ -2119,17 +2119,24 @@ static void step_init_2(int argc, char** argv)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
list_for_each_entry(pscf, &post_server_check_list, list) {
|
list_for_each_entry(pscf, &post_server_check_list, list) {
|
||||||
for (srv = px->srv; srv; srv = srv->next)
|
for (srv = px->srv; srv; srv = srv->next) {
|
||||||
err_code |= pscf->fct(srv);
|
err_code |= pscf->fct(srv);
|
||||||
|
if (err_code & (ERR_ABORT|ERR_FATAL)) {
|
||||||
|
ha_alert("Fatal errors found in configuration.\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
list_for_each_entry(ppcf, &post_proxy_check_list, list)
|
list_for_each_entry(ppcf, &post_proxy_check_list, list) {
|
||||||
err_code |= ppcf->fct(px);
|
err_code |= ppcf->fct(px);
|
||||||
|
if (err_code & (ERR_ABORT|ERR_FATAL)) {
|
||||||
|
ha_alert("Fatal errors found in configuration.\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
px->flags |= PR_FL_CHECKED;
|
px->flags |= PR_FL_CHECKED;
|
||||||
}
|
}
|
||||||
if (err_code & (ERR_ABORT|ERR_FATAL)) {
|
|
||||||
ha_alert("Fatal errors found in configuration.\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
err_code |= pattern_finalize_config();
|
err_code |= pattern_finalize_config();
|
||||||
if (err_code & (ERR_ABORT|ERR_FATAL)) {
|
if (err_code & (ERR_ABORT|ERR_FATAL)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user