From 08be72b827605c9f19ef527339065395f1ad1921 Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Wed, 28 Jul 2021 10:06:52 +0200 Subject: [PATCH] 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. --- src/server.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/server.c b/src/server.c index 5fa3946..7bef5bf 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; } -- 1.7.10.4