Detect if the sni used a constant value and if so, allow to reuse this
connection for later sessions. Use a combination of SMP_USE_INTRN +
!SMP_F_VOLATILE to consider a sample as a constant value.
This features has been requested on github issue #371.
- connections made with "usesrc" followed by a client-dependent value
("client", "clientip", "hdr_ip") are marked private and never shared;
- - connections sent to a server with a TLS SNI extension are marked private
- and are never shared;
+ - connections sent to a server with a variable value as TLS SNI extension
+ are marked private and are never shared. This is not the case if the SNI
+ is guaranteed to be a constant, as for example using a literal string;
- connections with certain bogus authentication schemes (relying on the
connection) like NTLM are detected, marked private and are never shared;
srv->ssl_ctx.sni, SMP_T_STR);
if (smp_make_safe(smp)) {
ssl_sock_set_servername(srv_conn, smp->data.u.str.area);
- conn_set_private(srv_conn);
+ if (!(srv->ssl_ctx.sni->fetch->use & SMP_USE_INTRN) ||
+ smp->flags & SMP_F_VOLATILE) {
+ conn_set_private(srv_conn);
+ }
}
}
#endif /* USE_OPENSSL */