@@ -1497,10 +1497,15 @@ async def create_datagram_endpoint(self, protocol_factory,
14971497 else :
14981498 raise exceptions [0 ]
14991499
1500- protocol = protocol_factory ()
1501- waiter = self .create_future ()
1502- transport = self ._make_datagram_transport (
1503- sock , protocol , r_addr , waiter )
1500+ try :
1501+ protocol = protocol_factory ()
1502+ waiter = self .create_future ()
1503+ transport = self ._make_datagram_transport (
1504+ sock , protocol , r_addr , waiter )
1505+ except :
1506+ # gh-156400: close the socket if the transport is never created.
1507+ sock .close ()
1508+ raise
15041509 if self ._debug :
15051510 if local_addr :
15061511 logger .info ("Datagram endpoint local_addr=%r remote_addr=%r "
@@ -1714,9 +1719,14 @@ async def connect_accepted_socket(
17141719 return transport , protocol
17151720
17161721 async def connect_read_pipe (self , protocol_factory , pipe ):
1717- protocol = protocol_factory ()
1718- waiter = self .create_future ()
1719- transport = self ._make_read_pipe_transport (pipe , protocol , waiter )
1722+ try :
1723+ protocol = protocol_factory ()
1724+ waiter = self .create_future ()
1725+ transport = self ._make_read_pipe_transport (pipe , protocol , waiter )
1726+ except :
1727+ # gh-156400: close the pipe if the transport is never created.
1728+ pipe .close ()
1729+ raise
17201730
17211731 try :
17221732 await waiter
@@ -1730,9 +1740,14 @@ async def connect_read_pipe(self, protocol_factory, pipe):
17301740 return transport , protocol
17311741
17321742 async def connect_write_pipe (self , protocol_factory , pipe ):
1733- protocol = protocol_factory ()
1734- waiter = self .create_future ()
1735- transport = self ._make_write_pipe_transport (pipe , protocol , waiter )
1743+ try :
1744+ protocol = protocol_factory ()
1745+ waiter = self .create_future ()
1746+ transport = self ._make_write_pipe_transport (pipe , protocol , waiter )
1747+ except :
1748+ # gh-156400: close the pipe if the transport is never created.
1749+ pipe .close ()
1750+ raise
17361751
17371752 try :
17381753 await waiter
0 commit comments