]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: server: clear dynamic srv on delete from proxy id/name trees
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 9 Jun 2021 14:00:43 +0000 (16:00 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 15 Jun 2021 09:38:06 +0000 (11:38 +0200)
Do not leave deleted server in used_server_id/used_server_addr backend
trees. This might lead to crashes if a deleted server is used through
these trees.

At this moment, dynamic servers are only added in used_server_id if they
have a fixed id. They are never inserted in used_server_addr as this
code is missing. So these new delete instructions are noop. However, a
fix will be provided soon to insert properly all dynamic servers in both
used_server_id and used_server_addr trees so the deletion counterpart
will be mandatory in the CLI server delete handler.

This must be backported to 2.4.

src/server.c

index 14f54857d579197f23b56b98d5b7db87efc0ef9e..20121bf42fd2919d7df7d527bb5d193c0c3ffc17 100644 (file)
@@ -4574,6 +4574,8 @@ static int cli_parse_delete_server(char **args, char *payload, struct appctx *ap
        }
 
        /* remove srv from addr_node tree */
+       eb32_delete(&srv->conf.id);
+       ebpt_delete(&srv->conf.name);
        ebpt_delete(&srv->addr_node);
 
        /* remove srv from idle_node tree for idle conn cleanup */