asyncio: sync with Tulip
* Tulip issue #196: IocpProactor._poll() clears the reference to the overlapped operation when the operation is done. It would be better to clear the reference in a new _OverlappedFuture.set_result() method, but it cannot be done yet because of a weird bug. * BaseSelectorEventLoop._write_to_self() now logs errors in debug mode.
This commit is contained in:
parent
64ba60aa57
commit
65dd69a3da
|
@ -120,7 +120,10 @@ class BaseSelectorEventLoop(base_events.BaseEventLoop):
|
|||
try:
|
||||
csock.send(b'\0')
|
||||
except OSError:
|
||||
pass
|
||||
if self._debug:
|
||||
logger.debug("Fail to write a null byte into the "
|
||||
"self-pipe socket",
|
||||
exc_info=True)
|
||||
|
||||
def _start_serving(self, protocol_factory, sock,
|
||||
sslcontext=None, server=None):
|
||||
|
|
|
@ -489,6 +489,11 @@ class IocpProactor:
|
|||
else:
|
||||
f.set_result(value)
|
||||
self._results.append(f)
|
||||
# FIXME, tulip issue #196: add _OverlappedFuture.set_result()
|
||||
# method to clear the refrence, don't do it here (f may
|
||||
# by a _WaitHandleFuture). Problem: clearing the reference
|
||||
# in _register() if ov.pedding is False leads to weird bugs.
|
||||
f._ov = None
|
||||
ms = 0
|
||||
|
||||
def _stop_serving(self, obj):
|
||||
|
|
Loading…
Reference in New Issue