2727from  urllib3 .util  import  Timeout  as  TimeoutSauce 
2828from  urllib3 .util  import  parse_url 
2929from  urllib3 .util .retry  import  Retry 
30- from  urllib3 .util .ssl_  import  create_urllib3_context 
3130
3231from  .auth  import  _basic_auth_str 
3332from  .compat  import  basestring , urlparse 
@@ -74,19 +73,6 @@ def SOCKSProxyManager(*args, **kwargs):
7473DEFAULT_POOL_TIMEOUT  =  None 
7574
7675
77- try :
78-     import  ssl   # noqa: F401 
79- 
80-     _preloaded_ssl_context  =  create_urllib3_context ()
81-     _preloaded_ssl_context .load_verify_locations (
82-         extract_zipped_paths (DEFAULT_CA_BUNDLE_PATH )
83-     )
84- except  ImportError :
85-     # Bypass default SSLContext creation when Python 
86-     # interpreter isn't built with the ssl module. 
87-     _preloaded_ssl_context  =  None 
88- 
89- 
9076def  _urllib3_request_context (
9177    request : "PreparedRequest" ,
9278    verify : "bool | str | None" ,
@@ -99,19 +85,9 @@ def _urllib3_request_context(
9985    scheme  =  parsed_request_url .scheme .lower ()
10086    port  =  parsed_request_url .port 
10187
102-     # Determine if we have and should use our default SSLContext 
103-     # to optimize performance on standard requests. 
104-     poolmanager_kwargs  =  getattr (poolmanager , "connection_pool_kw" , {})
105-     has_poolmanager_ssl_context  =  poolmanager_kwargs .get ("ssl_context" )
106-     should_use_default_ssl_context  =  (
107-         _preloaded_ssl_context  is  not None  and  not  has_poolmanager_ssl_context 
108-     )
109- 
11088    cert_reqs  =  "CERT_REQUIRED" 
11189    if  verify  is  False :
11290        cert_reqs  =  "CERT_NONE" 
113-     elif  verify  is  True  and  should_use_default_ssl_context :
114-         pool_kwargs ["ssl_context" ] =  _preloaded_ssl_context 
11591    elif  isinstance (verify , str ):
11692        if  not  os .path .isdir (verify ):
11793            pool_kwargs ["ca_certs" ] =  verify 
@@ -314,26 +290,27 @@ def cert_verify(self, conn, url, verify, cert):
314290        :param cert: The SSL certificate to verify. 
315291        """ 
316292        if  url .lower ().startswith ("https" ) and  verify :
317-             conn . cert_reqs  =  "CERT_REQUIRED" 
293+             cert_loc  =  None 
318294
319-             # Only load the CA certificates if 'verify' is a string indicating the CA bundle to use. 
320-             # Otherwise, if verify is a boolean, we don't load anything since 
321-             # the connection will be using a context with the default certificates already loaded, 
322-             # and this avoids a call to the slow load_verify_locations() 
295+             # Allow self-specified cert location. 
323296            if  verify  is  not True :
324-                 # `verify` must be a str with a path then 
325297                cert_loc  =  verify 
326298
327-                 if  not  os .path .exists (cert_loc ):
328-                     raise  OSError (
329-                         f"Could not find a suitable TLS CA certificate bundle, " 
330-                         f"invalid path: { cert_loc }  
331-                     )
299+             if  not  cert_loc :
300+                 cert_loc  =  extract_zipped_paths (DEFAULT_CA_BUNDLE_PATH )
332301
333-                 if  not  os .path .isdir (cert_loc ):
334-                     conn .ca_certs  =  cert_loc 
335-                 else :
336-                     conn .ca_cert_dir  =  cert_loc 
302+             if  not  cert_loc  or  not  os .path .exists (cert_loc ):
303+                 raise  OSError (
304+                     f"Could not find a suitable TLS CA certificate bundle, " 
305+                     f"invalid path: { cert_loc }  
306+                 )
307+ 
308+             conn .cert_reqs  =  "CERT_REQUIRED" 
309+ 
310+             if  not  os .path .isdir (cert_loc ):
311+                 conn .ca_certs  =  cert_loc 
312+             else :
313+                 conn .ca_cert_dir  =  cert_loc 
337314        else :
338315            conn .cert_reqs  =  "CERT_NONE" 
339316            conn .ca_certs  =  None 
0 commit comments