diff options
author | Vojtěch Boček <vbocek@gmail.com> | 2025-02-02 16:11:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-02 15:11:25 +0000 |
commit | 4e38eeafe2ff3bfc686514731d6281fed34a435e (patch) | |
tree | 529bb07624dd0e592b7c30b964cbe78043ebfb14 /Lib/asyncio/selector_events.py | |
parent | 853a6b7de222964d8cd0e9478cb5c78d490032e6 (diff) | |
download | cpython-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.py | 12 |
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() |