]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: checks: Report a socket error before any connection attempt
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 26 Oct 2020 10:10:49 +0000 (11:10 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 3 Nov 2020 09:23:00 +0000 (10:23 +0100)
When a health-check fails, if no connection attempt was performed, a socket
error must be reported. But this was only done if the connection was not
allocated. It must also be done if there is no control layer. Otherwise, a
L7TOUT will be reported instead.

It is possible to not having a control layer for a connection if the connection
address family is invalid or not defined.

This patch must be backported to 2.2.

src/check.c

index 88c78ed622b95bebf831ad72af39f6ac9529d8ee..c281bb2793625766e86db64104fe1468344d4df8 100644 (file)
@@ -655,8 +655,8 @@ void chk_report_conn_err(struct check *check, int errno_bck, int expired)
                set_server_check_status(check, HCHK_STATUS_SOCKERR, err_msg);
        }
 
-       if (!conn) {
-               /* connection allocation error before the connection was established */
+       if (!conn || !conn->ctrl) {
+               /* error before any connection attempt (connection allocation error or no control layer) */
                set_server_check_status(check, HCHK_STATUS_SOCKERR, err_msg);
        }
        else if (conn->flags & CO_FL_WAIT_L4_CONN) {