aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/asyncio/selector_events.py
diff options
context:
space:
mode:
authorVojtěch Boček <vbocek@gmail.com>2025-02-02 16:11:25 +0100
committerGitHub <noreply@github.com>2025-02-02 15:11:25 +0000
commit4e38eeafe2ff3bfc686514731d6281fed34a435e (patch)
tree529bb07624dd0e592b7c30b964cbe78043ebfb14 /Lib/asyncio/selector_events.py
parent853a6b7de222964d8cd0e9478cb5c78d490032e6 (diff)
downloadcpython-4e38eeafe2ff3bfc686514731d6281fed34a435e.tar.gz
cpython-4e38eeafe2ff3bfc686514731d6281fed34a435e.zip
gh-115514: Fix incomplete writes after close while using ssl in asyncio(#128037)
Co-authored-by: Kumar Aditya <kumaraditya@python.org>
Diffstat (limited to 'Lib/asyncio/selector_events.py')
-rw-r--r--Lib/asyncio/selector_events.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py
index 50992a607b3..22147451fa7 100644
--- a/Lib/asyncio/selector_events.py
+++ b/Lib/asyncio/selector_events.py
@@ -1185,10 +1185,13 @@ class _SelectorSocketTransport(_SelectorTransport):
return True
def _call_connection_lost(self, exc):
- super()._call_connection_lost(exc)
- if self._empty_waiter is not None:
- self._empty_waiter.set_exception(
- ConnectionError("Connection is closed by peer"))
+ try:
+ super()._call_connection_lost(exc)
+ finally:
+ self._write_ready = None
+ if self._empty_waiter is not None:
+ self._empty_waiter.set_exception(
+ ConnectionError("Connection is closed by peer"))
def _make_empty_waiter(self):
if self._empty_waiter is not None:
@@ -1203,7 +1206,6 @@ class _SelectorSocketTransport(_SelectorTransport):
def close(self):
self._read_ready_cb = None
- self._write_ready = None
super().close()