summaryrefslogtreecommitdiffstats
path: root/Lib/asyncio/selector_events.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2020-09-12 07:09:54 (GMT)
committerGitHub <noreply@github.com>2020-09-12 07:09:54 (GMT)
commit530d1105ed7b0aa5ef76e3116918fe39bc6a4823 (patch)
treef9c29b8380126b4eb772d6615b39fd05e9132267 /Lib/asyncio/selector_events.py
parent77901dc6c3d06dd31f6c84b2d3cb21dc26b1e351 (diff)
downloadcpython-530d1105ed7b0aa5ef76e3116918fe39bc6a4823.zip
cpython-530d1105ed7b0aa5ef76e3116918fe39bc6a4823.tar.gz
cpython-530d1105ed7b0aa5ef76e3116918fe39bc6a4823.tar.bz2
bpo-39651: Fix asyncio proactor _write_to_self() (GH-22197)
Fix a race condition in the call_soon_threadsafe() method of asyncio.ProactorEventLoop: do nothing if the self-pipe socket has been closed. (cherry picked from commit 1b0f0e3d7d03155da1cf9769a847874d559e57e3) Co-authored-by: Victor Stinner <vstinner@python.org>
Diffstat (limited to 'Lib/asyncio/selector_events.py')
-rw-r--r--Lib/asyncio/selector_events.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py
index a05cbb6..6ba3071 100644
--- a/Lib/asyncio/selector_events.py
+++ b/Lib/asyncio/selector_events.py
@@ -133,14 +133,16 @@ class BaseSelectorEventLoop(base_events.BaseEventLoop):
# a socket is closed, send() raises OSError (with errno set to
# EBADF, but let's not rely on the exact error code).
csock = self._csock
- if csock is not None:
- try:
- csock.send(b'\0')
- except OSError:
- if self._debug:
- logger.debug("Fail to write a null byte into the "
- "self-pipe socket",
- exc_info=True)
+ if csock is None:
+ return
+
+ try:
+ csock.send(b'\0')
+ except OSError:
+ 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, backlog=100,