mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-10-07 05:31:32 +02:00
Server tracking uses the same "tracknext" list for servers tracking another one and for the servers being tracked. This caused an issue which was fixed by commit f39c71c ([CRITICAL] fix server state tracking: it was O(n!) instead of O(n)), consisting in ensuring that a server is being checked before walking down the list, so that we don't propagate the up/down information via servers being part of the track chain. But the root cause is the fact that all servers share the same list. The correct solution consists in having a list head for the tracked servers and a list of next tracking servers. This simplifies the propagation logic, especially for the case where status changes might be passed to individual servers via the CLI.