From 5909380c057cef2f54a3cd3f4ff249649c6fe101 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 5 Sep 2019 18:24:46 +0200 Subject: [PATCH] BUG/MINOR: checks: stop polling for write when we have nothing left to send Since the change of I/O direction, we perform the connect() call and the send() call together from the top. But the send call must at least disable polling for writes once it does not have anything left to send. This bug is partially responsible for the waste of resources described in issue #253. This must be backported to 2.0. --- src/checks.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/checks.c b/src/checks.c index ff39b4f643..4a60c414d0 100644 --- a/src/checks.c +++ b/src/checks.c @@ -791,6 +791,9 @@ static void __event_srv_chk_w(struct conn_stream *cs) } } + if (!b_data(&check->bo)) + conn_xprt_stop_send(conn); + /* full request sent, we allow up to if nonzero for a response */ if (s->proxy->timeout.check) { t->expire = tick_add_ifset(now_ms, s->proxy->timeout.check); -- 2.39.5