const Ssl::Bio::sslFeatures &features = clnBio->getFeatures();
if (features.sslVersion != -1) {
SSL_set_ssl_method(ssl, Ssl::method(features.toSquidSSLVersion()));
+#ifdef TLSEXT_NAMETYPE_host_name
if (!features.serverName.empty())
SSL_set_tlsext_host_name(ssl, features.serverName.c_str());
+#endif
if (!features.clientRequestedCiphers.empty())
SSL_set_cipher_list(ssl, features.clientRequestedCiphers.c_str());
#ifdef SSL_OP_NO_COMPRESSION /* XXX: OpenSSL 0.9.8k lacks SSL_OP_NO_COMPRESSION */
for (std::list<int>::iterator it = features.extensions.begin(); it != features.extensions.end(); ++it) {
static int supportedExtensions[] = {
+#ifdef TLSEXT_TYPE_server_name
TLSEXT_TYPE_server_name,
+#endif
#ifdef TLSEXT_TYPE_opaque_prf_input
TLSEXT_TYPE_opaque_prf_input,
#endif
size_t mainHelloSize = features.helloMessage.contentSize() - 5;
const char *mainHello = features.helloMessage.content() + 5;
- assert(ssl->init_buf->max > mainHelloSize);
+ assert((size_t)ssl->init_buf->max > mainHelloSize);
memcpy(ssl->init_buf->data, mainHello, mainHelloSize);
debugs(83, 5, "Hello Data init and adjustd sizes :" << ssl->init_num << " = "<< mainHelloSize);
ssl->init_num = mainHelloSize;
sslVersion = SSL_version(ssl);
debugs(83, 7, "SSL version: " << SSL_get_version(ssl) << " (" << sslVersion << ")");
+#if defined(TLSEXT_NAMETYPE_host_name)
if(const char *server = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name))
serverName = server;
debugs(83, 7, "SNI server name: " << serverName);
+#endif
if (ssl->session->compress_meth)
compressMethod = ssl->session->compress_meth;