@@ -1219,21 +1219,26 @@ async def _create_connection_transport(
12191219 ssl_handshake_timeout = None ,
12201220 ssl_shutdown_timeout = None , context = None ):
12211221
1222- sock .setblocking (False )
1223- context = context if context is not None else contextvars .copy_context ()
1224-
1225- protocol = protocol_factory ()
1226- waiter = self .create_future ()
1227- if ssl :
1228- sslcontext = None if isinstance (ssl , bool ) else ssl
1229- transport = self ._make_ssl_transport (
1230- sock , protocol , sslcontext , waiter ,
1231- server_side = server_side , server_hostname = server_hostname ,
1232- ssl_handshake_timeout = ssl_handshake_timeout ,
1233- ssl_shutdown_timeout = ssl_shutdown_timeout ,
1234- context = context )
1235- else :
1236- transport = self ._make_socket_transport (sock , protocol , waiter , context = context )
1222+ try :
1223+ sock .setblocking (False )
1224+ context = context if context is not None else contextvars .copy_context ()
1225+
1226+ protocol = protocol_factory ()
1227+ waiter = self .create_future ()
1228+ if ssl :
1229+ sslcontext = None if isinstance (ssl , bool ) else ssl
1230+ transport = self ._make_ssl_transport (
1231+ sock , protocol , sslcontext , waiter ,
1232+ server_side = server_side , server_hostname = server_hostname ,
1233+ ssl_handshake_timeout = ssl_handshake_timeout ,
1234+ ssl_shutdown_timeout = ssl_shutdown_timeout ,
1235+ context = context )
1236+ else :
1237+ transport = self ._make_socket_transport (sock , protocol , waiter , context = context )
1238+ except :
1239+ # gh-153133: close the socket if the transport is never created.
1240+ sock .close ()
1241+ raise
12371242
12381243 try :
12391244 await waiter
0 commit comments