]> granicus.if.org Git - python/commitdiff
(Merge 3.4) asyncio, tulip issue 196: ProactorIocp._register() now registers
authorVictor Stinner <victor.stinner@gmail.com>
Sun, 27 Jul 2014 22:19:36 +0000 (00:19 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Sun, 27 Jul 2014 22:19:36 +0000 (00:19 +0200)
the overlapped in the _cache dictionary, even if we already got the result. We
need to keep a reference to the overlapped object, otherwise the memory may be
reused and GetQueuedCompletionStatus() may use random bytes and behaves badly.

There is still a hack for ConnectNamedPipe(): the overlapped object is not
register into _cache if the overlapped object completed directly.

Log also an error in debug mode in ProactorIocp._loop() if we get an unexpected
event.

Add a protection in ProactorIocp.close() to avoid blocking, even if it should
not happen. I still don't understand exactly why some the completion of some
overlapped objects are not notified.


Trivial merge