From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Tue, 8 Jan 2019 02:15:25 +0000 (-0800) Subject: bpo-35682: Fix _ProactorBasePipeTransport._force_close() (GH-11462) X-Git-Tag: v3.7.3rc1~168 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=88bd26a72eb4ab341cf19bea78a0039fbe4be3a2;p=thirdparty%2FPython%2Fcpython.git bpo-35682: Fix _ProactorBasePipeTransport._force_close() (GH-11462) bpo-32622, bpo-35682: Fix asyncio.ProactorEventLoop.sendfile(): don't attempt to set the result of an internal future if it's already done. Fix asyncio _ProactorBasePipeTransport._force_close(): don't set the result of _empty_waiter if it's already done. (cherry picked from commit 80fda712c83f5dd9560d42bf2aa65a72b18b7759) Co-authored-by: Victor Stinner --- diff --git a/Lib/asyncio/proactor_events.py b/Lib/asyncio/proactor_events.py index e350e8bc0c24..782c86106bce 100644 --- a/Lib/asyncio/proactor_events.py +++ b/Lib/asyncio/proactor_events.py @@ -110,7 +110,7 @@ class _ProactorBasePipeTransport(transports._FlowControlMixin, self._force_close(exc) def _force_close(self, exc): - if self._empty_waiter is not None: + if self._empty_waiter is not None and not self._empty_waiter.done(): if exc is None: self._empty_waiter.set_result(None) else: diff --git a/Misc/NEWS.d/next/Library/2019-01-08-01-54-02.bpo-35682.KDM9lk.rst b/Misc/NEWS.d/next/Library/2019-01-08-01-54-02.bpo-35682.KDM9lk.rst new file mode 100644 index 000000000000..8152bd707ba5 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-01-08-01-54-02.bpo-35682.KDM9lk.rst @@ -0,0 +1,2 @@ +Fix ``asyncio.ProactorEventLoop.sendfile()``: don't attempt to set the result +of an internal future if it's already done.