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