From: Aurelien DARRAGON Date: Mon, 12 May 2025 14:27:43 +0000 (+0200) Subject: BUG/MINOR: server: perform lbprm deinit for dynamic servers X-Git-Tag: v3.2-dev16~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c40d6ac84012d3f8c46e0c8aa90b5898111e642f;p=thirdparty%2Fhaproxy.git BUG/MINOR: server: perform lbprm deinit for dynamic servers Last commit 7361515 ("BUG/MINOR: server: dont depend on proxy for server cleanup in srv_drop()") introduced a regression because the lbprm server_deinit is not evaluated anymore with dynamic servers, possibly resulting in a memory leak. To fix the issue, in addition to free_proxy(), the server deinit check should be manually performed in cli_parse_delete_server() as well. No backport needed. --- diff --git a/src/server.c b/src/server.c index 8ccb1bc42..526abb623 100644 --- a/src/server.c +++ b/src/server.c @@ -6276,6 +6276,9 @@ static int cli_parse_delete_server(char **args, char *payload, struct appctx *ap if (srv->agent.state & CHK_ST_CONFIGURED) check_purge(&srv->agent); + if (srv->proxy->lbprm.server_deinit) + srv->proxy->lbprm.server_deinit(srv); + while (!MT_LIST_ISEMPTY(&srv->watcher_list)) { srv_watch = MT_LIST_NEXT(&srv->watcher_list, struct watcher *, el); BUG_ON(srv->next && srv->next->flags & SRV_F_DELETED);