From: Amaury Denoyelle Date: Wed, 28 Jul 2021 08:06:52 +0000 (+0200) Subject: BUG/MINOR: server: fix race on error path of 'add server' CLI if track X-Git-Tag: v2.5-dev4~78 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=08be72b827605c9f19ef527339065395f1ad1921;p=thirdparty%2Fhaproxy.git BUG/MINOR: server: fix race on error path of 'add server' CLI if track If an error occurs during a dynamic server creation with tracking, it must be removed from the tracked list. This operation is not thread-safe and thus must be conducted under the thread isolation. Track support for dynamic servers has been introduced in this release. This does not need to be backported. --- diff --git a/src/server.c b/src/server.c index 5fa3946662..7bef5bf7f0 100644 --- a/src/server.c +++ b/src/server.c @@ -4589,15 +4589,16 @@ static int cli_parse_add_server(char **args, char *payload, struct appctx *appct return 0; out: + if (srv && srv->track) + release_server_track(srv); + thread_release(); if (!usermsgs_empty()) cli_err(appctx, usermsgs_str()); - if (srv) { - release_server_track(srv); + if (srv) free_server(srv); - } return 1; }