Kaydet (Commit) 1b9763d0 authored tarafından Victor Stinner's avatar Victor Stinner

asyncio: sync with Tulip

* Fix a race condition in BaseSubprocessTransport._try_finish().

  If the process exited before the _post_init() method was called, scheduling
  the call to _call_connection_lost() with call_soon() is wrong:
  connection_made() must be called before connection_lost().

  Reuse the BaseSubprocessTransport._call() method to schedule the call to
  _call_connection_lost() to ensure that connection_made() and
  connection_lost() are called in the correct order.

* Add repr(PipeHandle)

* Fix typo
üst dc7765d1
......@@ -153,7 +153,7 @@ class BaseSubprocessTransport(transports.SubprocessTransport):
if all(p is not None and p.disconnected
for p in self._pipes.values()):
self._finished = True
self._loop.call_soon(self._call_connection_lost, None)
self._call(self._call_connection_lost, None)
def _call_connection_lost(self, exc):
try:
......
......@@ -402,7 +402,7 @@ class IocpProactor:
ov.getresult()
return pipe
# FIXME: Tulip issue 196: why to we neeed register=False?
# FIXME: Tulip issue 196: why do we need register=False?
# See also the comment in the _register() method
return self._register(ov, pipe, finish_accept_pipe,
register=False)
......
......@@ -134,6 +134,13 @@ class PipeHandle:
def __init__(self, handle):
self._handle = handle
def __repr__(self):
if self._handle != -1:
handle = 'handle=%r' % self._handle
else:
handle = 'closed'
return '<%s %s>' % (self.__class__.__name__, handle)
@property
def handle(self):
return self._handle
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment