MEDIUM: proxy: register a post-section cleanup function

For listen/frontend/backend, we now want to be able to clean up the
default-server directive that's no longer used past the end of the
section. For this we register a post-section function and perform the
cleanup there.
This commit is contained in:
Willy Tarreau 2025-07-11 08:58:48 +02:00
parent 49a619acae
commit abcc73830f

View File

@ -2818,6 +2818,30 @@ void proxy_adjust_all_maxconn()
}
}
/* releases what's no longer needed after a proxy section covering <curproxy>.
* Returns an error code made of ERR_*, or 0 on success.
*/
static int post_section_px_cleanup()
{
if ((curproxy->cap & PR_CAP_LISTEN) && !(curproxy->cap & PR_CAP_DEF)) {
/* This is a regular proxy (not defaults). It doesn't need
* to keep a default-server section if it still had one. We
* want to keep it for defaults however, obviously.
*/
if (curproxy->defsrv) {
ha_free((char **)&curproxy->defsrv->conf.file);
ha_free(&curproxy->defsrv);
}
}
return 0;
}
REGISTER_CONFIG_POST_SECTION("frontend", post_section_px_cleanup);
REGISTER_CONFIG_POST_SECTION("backend", post_section_px_cleanup);
REGISTER_CONFIG_POST_SECTION("listen", post_section_px_cleanup);
REGISTER_CONFIG_POST_SECTION("defaults", post_section_px_cleanup);
/* Config keywords below */
static struct cfg_kw_list cfg_kws = {ILH, {