]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: server: fix race on error path of 'add server' CLI if track
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 28 Jul 2021 08:06:52 +0000 (10:06 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 4 Aug 2021 07:18:12 +0000 (09:18 +0200)
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

index 5fa3946662b4405211036710a5fe66f4807fa9b9..7bef5bf7f0789b35570ed1538af4bd0f8dd3ec2c 100644 (file)
@@ -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;
 }