@@ -226,6 +226,8 @@ class Connection(BaseConnection):
226226 Set to true to check the server certificate's validity.
227227 ssl_verify_identity : bool, optional
228228 Set to true to check the server's identity.
229+ tls_sni_servername: str, optional
230+ Set server host name for TLS connection
229231 read_default_group : str, optional
230232 Group to read from in the configuration file.
231233 autocommit : bool, optional
@@ -295,6 +297,7 @@ class Connection(BaseConnection):
295297 _auth_plugin_name = ''
296298 _closed = False
297299 _secure = False
300+ _tls_sni_servername = None
298301
299302 def __init__ ( # noqa: C901
300303 self ,
@@ -335,6 +338,7 @@ def __init__( # noqa: C901
335338 ssl_key = None ,
336339 ssl_verify_cert = None ,
337340 ssl_verify_identity = None ,
341+ tls_sni_servername = None ,
338342 parse_json = True ,
339343 invalid_values = None ,
340344 pure_python = None ,
@@ -638,6 +642,7 @@ def _config(key, arg):
638642
639643 self ._is_committable = True
640644 self ._in_sync = False
645+ self ._tls_sni_servername = tls_sni_servername
641646 self ._track_env = bool (track_env ) or self .host == 'singlestore.com'
642647 self ._enable_extended_data_types = enable_extended_data_types
643648 if vector_data_format .lower () in ['json' , 'binary' ]:
@@ -1364,7 +1369,10 @@ def _request_authentication(self): # noqa: C901
13641369 if self .ssl and self .server_capabilities & CLIENT .SSL :
13651370 self .write_packet (data_init )
13661371
1367- self ._sock = self .ctx .wrap_socket (self ._sock , server_hostname = self .host )
1372+ hostname = self .host
1373+ if self ._tls_sni_servername :
1374+ hostname = self ._tls_sni_servername
1375+ self ._sock = self .ctx .wrap_socket (self ._sock , server_hostname = hostname )
13681376 self ._rfile = self ._sock .makefile ('rb' )
13691377 self ._secure = True
13701378
0 commit comments