Skip to content

Commit 23f587e

Browse files
twisteroidambassador1st1
authored andcommitted
bpo-31647: Fix write_eof() after close() for SelectorSocketTransport (GH-7149)
Fixed bug where calling write_eof() on a _SelectorSocketTransport after it's already closed raises AttributeError.
1 parent 35230d0 commit 23f587e

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

‎Lib/asyncio/selector_events.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -899,7 +899,7 @@ def _write_ready(self):
899899
self._sock.shutdown(socket.SHUT_WR)
900900

901901
def write_eof(self):
902-
if self._eof:
902+
if self._closing or self._eof:
903903
return
904904
self._eof = True
905905
if not self._buffer:

‎Lib/test/test_asyncio/test_selector_events.py‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1263,6 +1263,12 @@ def test_write_eof_buffer(self):
12631263
self.sock.shutdown.assert_called_with(socket.SHUT_WR)
12641264
tr.close()
12651265

1266+
def test_write_eof_after_close(self):
1267+
tr = self.socket_transport()
1268+
tr.close()
1269+
self.loop.run_until_complete(asyncio.sleep(0))
1270+
tr.write_eof()
1271+
12661272
@mock.patch('asyncio.base_events.logger')
12671273
def test_transport_close_remove_writer(self, m_log):
12681274
remove_writer = self.loop._remove_writer = mock.Mock()
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fixed bug where calling write_eof() on a _SelectorSocketTransport after it's
2+
already closed raises AttributeError.

0 commit comments

Comments
 (0)