diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2015-01-21 23:17:54 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2015-01-21 23:17:54 (GMT) |
commit | 1ca9392c7083972c1953c02e6f2cca54934ce0a6 (patch) | |
tree | 643e259e9c3947358d7d4eacff46cd9c76ce33bf /Lib/asyncio | |
parent | 0c2e4088334906bd883caabe3573bba3f82d0819 (diff) | |
download | cpython-1ca9392c7083972c1953c02e6f2cca54934ce0a6.zip cpython-1ca9392c7083972c1953c02e6f2cca54934ce0a6.tar.gz cpython-1ca9392c7083972c1953c02e6f2cca54934ce0a6.tar.bz2 |
Issue #23095, asyncio: IocpProactor.close() must not cancel pending
_WaitCancelFuture futures
Diffstat (limited to 'Lib/asyncio')
-rw-r--r-- | Lib/asyncio/windows_events.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Lib/asyncio/windows_events.py b/Lib/asyncio/windows_events.py index 5105426..3cb5690f 100644 --- a/Lib/asyncio/windows_events.py +++ b/Lib/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() |