From b123e2b86a6c222f858465c0fa3f1af0ab9b5705 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Fri, 18 Jun 2021 08:47:14 +0200 Subject: [PATCH] BUG/MINOR: server/cli: Fix locking in function processing "set server" command The commit c7b391aed ("BUG/MEDIUM: server/cli: Fix ABBA deadlock when fqdn is set from the CLI") introduced 2 bugs. The first one is a typo on the server's lock label (s/SERVER_UNLOCK/SERVER_LOCK/). The second one is about the server's lock itself. It must be acquired to execute the "agent-send" subcommand. The patch above is marked to be backported as far as 1.8. Thus, this one must also backported as far 1.8. BUG/MINOR: server/cli: Don't forget to lock server on agent-send subcommand (cherry picked from commit 0ba54bb40102787ce875c5d15cb0fb4193f178ec) Signed-off-by: Christopher Faulet (cherry picked from commit 88fca377546267d24ab23cb7f7d2e0eef9d71ee6) Signed-off-by: Christopher Faulet --- src/server.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/server.c b/src/server.c index 5507d20..3569fd1 100644 --- a/src/server.c +++ b/src/server.c @@ -4484,12 +4484,14 @@ static int cli_parse_set_server(char **args, char *payload, struct appctx *appct HA_SPIN_UNLOCK(SERVER_LOCK, &sv->lock); } else if (strcmp(args[3], "agent-send") == 0) { + HA_SPIN_LOCK(SERVER_LOCK, &sv->lock); if (!(sv->agent.state & CHK_ST_ENABLED)) cli_err(appctx, "agent checks are not enabled on this server.\n"); else { if (!set_srv_agent_send(sv, args[4])) cli_err(appctx, "cannot allocate memory for new string.\n"); } + HA_SPIN_UNLOCK(SERVER_LOCK, &sv->lock); } else if (strcmp(args[3], "check-port") == 0) { int i = 0; @@ -4548,7 +4550,7 @@ static int cli_parse_set_server(char **args, char *payload, struct appctx *appct sv->flags &= ~SRV_F_NO_RESOLUTION; } warning = update_server_fqdn(sv, args[4], "stats socket command", 1); - HA_SPIN_UNLOCK(SERVER_UNLOCK, &sv->lock); + HA_SPIN_UNLOCK(SERVER_LOCK, &sv->lock); HA_SPIN_UNLOCK(DNS_LOCK, &sv->resolvers->lock); if (warning) cli_msg(appctx, LOG_WARNING, warning); -- 1.7.10.4