(connect->options & TCPCHK_MASK_OPTS_CONNECT);
}
+/* Returns true if the connect rule uses SSL. */
+static inline int tcpcheck_connect_use_ssl(const struct check *check,
+ const struct tcpcheck_connect *connect)
+{
+ if (connect->options & TCPCHK_OPT_SSL)
+ return 1;
+ if (connect->options & TCPCHK_OPT_DEFAULT_CONNECT)
+ return (check->xprt == xprt_get(XPRT_SSL));
+ return 0;
+}
+
/* Evaluates a TCPCHK_ACT_CONNECT rule. Returns TCPCHK_EVAL_WAIT to wait the
* connection establishment, TCPCHK_EVAL_CONTINUE to evaluate the next rule or
* TCPCHK_EVAL_STOP if an error occurred.
if (check->pool_conn_name)
pool_conn_name = ist(check->pool_conn_name);
- else if (connect->sni)
- pool_conn_name = ist(connect->sni);
- else if ((connect->options & TCPCHK_OPT_DEFAULT_CONNECT) && check->sni)
- pool_conn_name = ist(check->sni);
+ else if (tcpcheck_connect_use_ssl(check, connect)) {
+ if (connect->sni)
+ pool_conn_name = ist(connect->sni);
+ else if ((connect->options & TCPCHK_OPT_DEFAULT_CONNECT) && check->sni)
+ pool_conn_name = ist(check->sni);
+ }
hash = be_calculate_conn_hash(s, NULL, check->sess, NULL, NULL, pool_conn_name);
conn_err = be_reuse_connection(hash, check->sess, s->proxy, s,