From cc705a6b612df9d1ac46fea4c733f621669c4514 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 5 Sep 2019 17:51:30 +0200 Subject: [PATCH] BUG/MINOR: checks: start sending the request right after connect() Since the change of I/O direction, we must not wait for an empty connect callback before sending the request, we must attempt to send it as soon as possible so that we don't uselessly poll. This is what this patch does. This reduces the total check duration by a complete poll loop compared to what is described in issue #253. This must be backported to 2.0. --- src/checks.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/checks.c b/src/checks.c index 4a60c414d0..55e8a17a09 100644 --- a/src/checks.c +++ b/src/checks.c @@ -2248,8 +2248,14 @@ static struct task *process_chk_conn(struct task *t, void *context, unsigned sho t->expire = tick_first(t->expire, t_con); } - if (check->type) + if (check->type) { + /* send the request if we have one. We avoid receiving + * if not connected, unless we didn't subscribe for + * sending since otherwise we won't be woken up. + */ + __event_srv_chk_w(cs); __event_srv_chk_r(cs); + } task_set_affinity(t, tid_bit); goto reschedule; -- 2.39.5