BUG/MINOR: tcp-check: don't quit with pending data in the send buffer
authorWilly Tarreau <w@1wt.eu>
Wed, 4 Oct 2017 09:38:08 +0000 (11:38 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 4 Oct 2017 11:41:20 +0000 (13:41 +0200)
In the rare case where the "tcp-check send" directive is the last one in
the list, it leaves the loop without sending the data. Fortunately, the
polling is still enabled on output, resulting in the connection handler
calling back to send what remains, but this is ugly and not very reliable.

This may be backported to 1.7 and 1.6.

src/checks.c

index 31aa608..ad1f568 100644 (file)
@@ -2786,8 +2786,6 @@ static void tcpcheck_main(struct connection *conn)
                                check->current_step->action == TCPCHK_ACT_COMMENT)
                                check->current_step = LIST_NEXT(&check->current_step->list, struct tcpcheck_rule *, list);
 
-                       if (&check->current_step->list == head)
-                               break;
                } /* end 'send' */
                else if (check->current_step->action == TCPCHK_ACT_EXPECT) {
                        if (unlikely(check->result == CHK_RES_FAILED))