@@ -1219,26 +1219,31 @@ 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 )
1237-
1222+ # gh-153133: close the socket if the transport is never created.
1223+ transport = None
12381224 try :
1225+ sock .setblocking (False )
1226+ context = context if context is not None else contextvars .copy_context ()
1227+
1228+ protocol = protocol_factory ()
1229+ waiter = self .create_future ()
1230+ if ssl :
1231+ sslcontext = None if isinstance (ssl , bool ) else ssl
1232+ transport = self ._make_ssl_transport (
1233+ sock , protocol , sslcontext , waiter ,
1234+ server_side = server_side , server_hostname = server_hostname ,
1235+ ssl_handshake_timeout = ssl_handshake_timeout ,
1236+ ssl_shutdown_timeout = ssl_shutdown_timeout ,
1237+ context = context )
1238+ else :
1239+ transport = self ._make_socket_transport (sock , protocol , waiter , context = context )
1240+
12391241 await waiter
12401242 except :
1241- transport .close ()
1243+ if transport is None :
1244+ sock .close ()
1245+ else :
1246+ transport .close ()
12421247 raise
12431248
12441249 return transport , protocol
0 commit comments