mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-01-06 09:21:19 +01:00
When we're purging idle connections, there's a race condition, when we're removing the connection from the idle list, to add it to the list of connections to free, if the thread owning the connection tries to free it at the same time. To fix this, simply add a per-thread lock, that has to be hold before removing the connection from the idle list, and when, in conn_free(), we're about to remove the connection from every list. That way, we know for sure the connection will stay valid while we remove it from the idle list, to add it to the list of connections to free. This should happen rarely enough that it shouldn't have any impact on performances. This has not been reported yet, but could provoke random segfaults. This should be backported to 2.0.