diff --git a/src/data-types/mailstream_cfstream.c b/src/data-types/mailstream_cfstream.c index 406fda1e..63a83fd2 100755 --- a/src/data-types/mailstream_cfstream.c +++ b/src/data-types/mailstream_cfstream.c @@ -991,6 +991,13 @@ int mailstream_cfstream_set_ssl_enabled(mailstream * s, int ssl_enabled) CFDictionarySetValue(settings, kCFStreamSSLValidatesCertificateChain, kCFBooleanFalse); } + // enable SNI (Server Name Indication) + if (cfstream_data->ssl_peer_name && cfstream_data->ssl_peer_name[0] != 0) { + CFStringRef ssl_peer_name = CFStringCreateWithCString(NULL, cfstream_data->ssl_peer_name, kCFStringEncodingUTF8); + CFDictionarySetValue(settings, kCFStreamSSLPeerName, ssl_peer_name); + CFRelease(ssl_peer_name); + } + CFReadStreamSetProperty(cfstream_data->readStream, kCFStreamPropertySSLSettings, settings); CFWriteStreamSetProperty(cfstream_data->writeStream, kCFStreamPropertySSLSettings, settings); CFRelease(settings); diff --git a/src/low-level/imap/mailimap_ssl.c b/src/low-level/imap/mailimap_ssl.c index 2e0029da..86612569 100644 --- a/src/low-level/imap/mailimap_ssl.c +++ b/src/low-level/imap/mailimap_ssl.c @@ -129,6 +129,7 @@ static int mailimap_cfssl_connect_voip_ssl_level(mailimap * f, const char * serv } mailstream_cfstream_set_ssl_level(stream, ssl_level); mailstream_cfstream_set_ssl_verification_mask(stream, MAILSTREAM_CFSTREAM_SSL_NO_VERIFICATION); + mailstream_cfstream_set_ssl_peer_name(stream, server); // for SNI (Server Name Indication) r = mailstream_cfstream_set_ssl_enabled(stream, 1); if (r < 0) { mailstream_close(stream); diff --git a/src/low-level/smtp/mailsmtp_ssl.c b/src/low-level/smtp/mailsmtp_ssl.c index 1f3af8ba..a13fdd5b 100644 --- a/src/low-level/smtp/mailsmtp_ssl.c +++ b/src/low-level/smtp/mailsmtp_ssl.c @@ -121,6 +121,7 @@ static int mailsmtp_cfssl_connect_ssl_level(mailsmtp * session, } mailstream_cfstream_set_ssl_level(stream, ssl_level); mailstream_cfstream_set_ssl_verification_mask(stream, MAILSTREAM_CFSTREAM_SSL_NO_VERIFICATION); + mailstream_cfstream_set_ssl_peer_name(stream, server); // for SNI (Server Name Indication) r = mailstream_cfstream_set_ssl_enabled(stream, 1); if (r < 0) { mailstream_close(stream);