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 5fa3946..7bef5bf 100644
--- a/src/server.c
+++ b/src/server.c
@@ -4589,15 +4589,16 @@
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;
}