mirror of https://github.com/python/cpython
asyncio: Close transports on error
Fix create_datagram_endpoint(), connect_read_pipe() and connect_write_pipe(): close the transport if the task is cancelled or on error.
This commit is contained in:
parent
21d7533c4c
commit
2596dd0894
|
@ -723,7 +723,13 @@ class BaseEventLoop(events.AbstractEventLoop):
|
|||
logger.debug("Datagram endpoint remote_addr=%r created: "
|
||||
"(%r, %r)",
|
||||
remote_addr, transport, protocol)
|
||||
yield from waiter
|
||||
|
||||
try:
|
||||
yield from waiter
|
||||
except:
|
||||
transport.close()
|
||||
raise
|
||||
|
||||
return transport, protocol
|
||||
|
||||
@coroutine
|
||||
|
@ -815,7 +821,13 @@ class BaseEventLoop(events.AbstractEventLoop):
|
|||
protocol = protocol_factory()
|
||||
waiter = futures.Future(loop=self)
|
||||
transport = self._make_read_pipe_transport(pipe, protocol, waiter)
|
||||
yield from waiter
|
||||
|
||||
try:
|
||||
yield from waiter
|
||||
except:
|
||||
transport.close()
|
||||
raise
|
||||
|
||||
if self._debug:
|
||||
logger.debug('Read pipe %r connected: (%r, %r)',
|
||||
pipe.fileno(), transport, protocol)
|
||||
|
@ -826,7 +838,13 @@ class BaseEventLoop(events.AbstractEventLoop):
|
|||
protocol = protocol_factory()
|
||||
waiter = futures.Future(loop=self)
|
||||
transport = self._make_write_pipe_transport(pipe, protocol, waiter)
|
||||
yield from waiter
|
||||
|
||||
try:
|
||||
yield from waiter
|
||||
except:
|
||||
transport.close()
|
||||
raise
|
||||
|
||||
if self._debug:
|
||||
logger.debug('Write pipe %r connected: (%r, %r)',
|
||||
pipe.fileno(), transport, protocol)
|
||||
|
|
Loading…
Reference in New Issue