]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: connections: Always call shutdown, with no linger.
authorOlivier Houchard <ohouchard@haproxy.com>
Tue, 2 Jul 2019 14:35:18 +0000 (16:35 +0200)
committerOlivier Houchard <cognet@ci0.org>
Tue, 2 Jul 2019 14:40:55 +0000 (16:40 +0200)
commit6c7e96a3e1abb331e414d1aabb45d9fedb0254c2
tree2890787abf2aac034ad60552170b45393595e7cd
parentb8fc304e8f996f0d9835e4d6524ef8961d3be076
BUG/MEDIUM: connections: Always call shutdown, with no linger.

Revert commit fe4abe62c7c5206dff1802f42d17014e198b9141.
The goal was to make sure for health-checks, we would not get sockets in
TIME_WAIT. To do so, we would not call shutdown() if linger_risk is set.
However that is wrong, and that means shutw would never be forwarded to
the server, and thus we could get connection that are never properly closed.
Instead, to fix the original problem as described here :
https://www.mail-archive.com/haproxy@formilux.org/msg34080.html
Just make sure the checks code call cs_shutr() before calling cs_shutw().
If shutr has been called, conn_sock_shutw() will make no attempt to call
shutdown(), as it knows close() will be called.
We should really review and revamp the shutr/shutw code, as described in
github issue #142.

This should be backported to 1.9 and 2.0.
include/proto/connection.h
src/checks.c