#ifdef USE_OPENSSL
/* Set socket SNI unless connection is reused. */
- if (conn_is_ssl(srv_conn) && srv && srv->ssl_ctx.sni && !(s->flags & SF_SRV_REUSED)) {
- struct sample *sni_smp = NULL;
-
- sni_smp = sample_fetch_as_type(s->be, s->sess, s,
- SMP_OPT_DIR_REQ | SMP_OPT_FINAL,
- srv->ssl_ctx.sni, SMP_T_STR);
- if (smp_make_safe(sni_smp))
- ssl_sock_set_servername(srv_conn, sni_smp->data.u.str.area);
+ if (conn_is_ssl(srv_conn) && !(s->flags & SF_SRV_REUSED)) {
+ int sni_set = 0;
+
+ if (srv && srv->ssl_ctx.sni) {
+ struct sample *sni_smp = NULL;
+
+ sni_smp = sample_fetch_as_type(s->be, s->sess, s,
+ SMP_OPT_DIR_REQ | SMP_OPT_FINAL,
+ srv->ssl_ctx.sni, SMP_T_STR);
+ if (smp_make_safe(sni_smp)) {
+ ssl_sock_set_servername(srv_conn, sni_smp->data.u.str.area);
+ sni_set = 1;
+ }
+ }
+ if (!sni_set)
+ ssl_sock_set_servername(srv_conn, NULL);
}
#endif /* USE_OPENSSL */
ssl_sock_set_servername(conn, s->check.sni);
else if (auto_sni)
ssl_sock_set_servername(conn, b_orig(auto_sni));
+ else
+ ssl_sock_set_servername(conn, NULL);
if (connect->alpn)
ssl_sock_set_alpn(conn, (unsigned char *)connect->alpn, connect->alpn_len);