BUG/MINOR: checks: expire on timeout.check if smaller than timeout.connect
It happens that haproxy doesn't displace the task in the wait queue when
validating a connection, so if the check timeout is set to a smaller value
than timeout.connect, it will not strike before timeout.connect.
The bug is present at least in 1.4.15..1.4.21, so the fix must be backported.
diff --git a/src/checks.c b/src/checks.c
index febf77e..03354a7 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -793,8 +793,10 @@
ret = send(fd, check_req, check_len, MSG_DONTWAIT | MSG_NOSIGNAL);
if (ret == check_len) {
/* we allow up to <timeout.check> if nonzero for a responce */
- if (s->proxy->timeout.check)
+ if (s->proxy->timeout.check) {
t->expire = tick_add_ifset(now_ms, s->proxy->timeout.check);
+ task_queue(t);
+ }
EV_FD_SET(fd, DIR_RD); /* prepare for reading reply */
goto out_nowake;
}