From 5d7bbcf567230dcfa8a419b1a0d462566c65ab83 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 22 Jan 2015 00:15:53 +0100 Subject: Python issue #23095: IocpProactor.close() must not cancel pending _WaitCancelFuture futures --- asyncio/windows_events.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/asyncio/windows_events.py b/asyncio/windows_events.py index 5105426..3cb5690 100644 --- a/asyncio/windows_events.py +++ b/asyncio/windows_events.py @@ -163,6 +163,9 @@ class _WaitCancelFuture(_BaseWaitHandleFuture): self._done_callback = None + def cancel(self): + raise RuntimeError("_WaitCancelFuture must not be cancelled") + def _schedule_callbacks(self): super(_WaitCancelFuture, self)._schedule_callbacks() if self._done_callback is not None: @@ -693,6 +696,9 @@ class IocpProactor: # FIXME: Tulip issue 196: remove this case, it should not happen elif fut.done() and not fut.cancelled(): del self._cache[address] + elif isinstance(fut, _WaitCancelFuture): + # _WaitCancelFuture must not be cancelled + pass else: try: fut.cancel() -- cgit v1.2.1