]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: checks: Make sure the tasklet won't run if the connection is closed.
authorOlivier Houchard <ohouchard@haproxy.com>
Tue, 2 Jul 2019 15:42:22 +0000 (17:42 +0200)
committerOlivier Houchard <cognet@ci0.org>
Tue, 2 Jul 2019 15:45:35 +0000 (17:45 +0200)
commitf494957980d3e570ba2f4339481c3a66182e1af3
tree44a77a6570e45feda03a4646db9ed65046a37f76
parent6c7e96a3e1abb331e414d1aabb45d9fedb0254c2
BUG/MEDIUM: checks: Make sure the tasklet won't run if the connection is closed.

wake_srv_chk() can be called from conn_fd_handler(), and may decide to
destroy the conn_stream and the connection, by calling cs_close(). If that
happens, we have to make sure the tasklet isn't scheduled to run, or it will
probably crash trying to access the connection or the conn_stream.
This fixes a crash that can be seen when using tcp checks.

This should be backported to 1.9 and 2.0.
For 1.9, the call should be instead :
task_remove_from_tasklet_list((struct task *)check->wait_list.task);
That function was renamed in 2.0.
src/checks.c