BUG/MINOR: checks: do not exit tcp-checks from the middle of the loop

There's a comment above tcpcheck_main() clearly stating that no return
statement should be placed in the middle, still we did have one after
installing the mux. It looks mostly harmless though as it will only
fail to mark the server as being in error in case of allocation failure
or config issue.

This fix should be backported to 2.0 and probably 1.9 as well.

(cherry picked from commit 2ab5c38359340c52abce3516e572b838a30b1754)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/checks.c b/src/checks.c
index c2ee601..353b43b 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -2683,7 +2683,7 @@
  * connection, presenting the risk of an fd replacement.
  *
  * Please do NOT place any return statement in this function and only leave
- * via the out_unlock label after setting retcode.
+ * via the out_end_tcpcheck label after setting retcode.
  */
 static int tcpcheck_main(struct check *check)
 {
@@ -2886,8 +2886,12 @@
 			}
 
 			conn_prepare(conn, proto, xprt);
-			if (conn_install_mux(conn, &mux_pt_ops, cs, proxy, NULL) < 0)
-				return SF_ERR_RESOURCE;
+
+			if (conn_install_mux(conn, &mux_pt_ops, cs, proxy, NULL) < 0) {
+				ret = SF_ERR_RESOURCE;
+				goto fail_check;
+			}
+
 			cs_attach(cs, check, &check_conn_cb);
 
 			ret = SF_ERR_INTERNAL;
@@ -2912,6 +2916,7 @@
 			 * Note that we try to prevent the network stack from sending the ACK during the
 			 * connect() when a pure TCP check is used (without PROXY protocol).
 			 */
+		fail_check:
 			switch (ret) {
 			case SF_ERR_NONE:
 				/* we allow up to min(inter, timeout.connect) for a connection