BUG/MEDIUM: checks: Subscribe to I/O events only if a mux was installed
authorChristopher Faulet <cfaulet@haproxy.com>
Tue, 12 May 2020 13:05:43 +0000 (15:05 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 12 May 2020 13:05:47 +0000 (15:05 +0200)
In the commit 2fabd9d53 ("BUG/MEDIUM: checks: Subscribe to I/O events on an
unfinished connect"), we force the subscribtion to I/O events when a new
connection is opened if it is not fully established. But it must only be done if
a mux was immediately installed. If there is no mux, no subscription must be
performed.

No backport needed.

src/checks.c

index 901deb9..d22c113 100644 (file)
@@ -1891,10 +1891,12 @@ static enum tcpcheck_eval_ret tcpcheck_eval_connect(struct check *check, struct
 
        /* don't do anything until the connection is established */
        if (conn->flags & CO_FL_WAIT_XPRT) {
-               if (next && next->action == TCPCHK_ACT_SEND)
-                       conn->mux->subscribe(cs, SUB_RETRY_SEND, &check->wait_list);
-               else
-                       conn->mux->subscribe(cs, SUB_RETRY_RECV, &check->wait_list);
+               if (conn->mux) {
+                       if (next && next->action == TCPCHK_ACT_SEND)
+                               conn->mux->subscribe(cs, SUB_RETRY_SEND, &check->wait_list);
+                       else
+                               conn->mux->subscribe(cs, SUB_RETRY_RECV, &check->wait_list);
+               }
                ret = TCPCHK_EVAL_WAIT;
                goto out;
        }