BUG/MINOR: rhttp: fix reconnect if timeout connect unset
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 10 Apr 2025 16:05:55 +0000 (18:05 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 22 Apr 2025 09:11:16 +0000 (11:11 +0200)
Active connect on reverse http relies on connect timeout to detect
connection failure. Thus, if this timeout was unset, connection failure
may not be properly detected.

Fix this by fallback on hardcoded value of 1s for connect if timeout is
unset in the configuration. This is considered as a minor bug, as
haproxy advises against running with timeout unset.

This must be backported up to 2.9.

(cherry picked from commit 2b8da5f9ab8639f4213ee21fc5fd5ca12c53cddb)
Signed-off-by: Willy Tarreau <w@1wt.eu>
(cherry picked from commit cd6e4517fdec392cef375c9ddc75da38a1f07b44)
Signed-off-by: Willy Tarreau <w@1wt.eu>

src/proto_rhttp.c

index 76a3b13..6fe43f4 100644 (file)
@@ -287,7 +287,7 @@ struct task *rhttp_process(struct task *task, void *ctx, unsigned int state)
                l->rx.rhttp.pend_conn = conn;
 
                /* On success task will be woken up by H2 mux after reversal. */
-               l->rx.rhttp.task->expire = conn ?
+               l->rx.rhttp.task->expire = conn && tick_isset(srv->proxy->timeout.connect) ?
                  tick_add_ifset(now_ms, srv->proxy->timeout.connect) :
                  MS_TO_TICKS(now_ms + 1000);
        }