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.
This commit is contained in:
Willy Tarreau 2012-05-25 07:41:38 +02:00
parent 8dc4184c57
commit 1e44a49c89

View File

@ -793,8 +793,10 @@ static int event_srv_chk_w(int fd)
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;
}