Commit 23f587e3 authored by twisteroid ambassador's avatar twisteroid ambassador Committed by Yury Selivanov

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.
parent 35230d08
......@@ -899,7 +899,7 @@ class _SelectorSocketTransport(_SelectorTransport):
self._sock.shutdown(socket.SHUT_WR)
def write_eof(self):
if self._eof:
if self._closing or self._eof:
return
self._eof = True
if not self._buffer:
......
......@@ -1263,6 +1263,12 @@ class SelectorSocketTransportTests(test_utils.TestCase):
self.sock.shutdown.assert_called_with(socket.SHUT_WR)
tr.close()
def test_write_eof_after_close(self):
tr = self.socket_transport()
tr.close()
self.loop.run_until_complete(asyncio.sleep(0))
tr.write_eof()
@mock.patch('asyncio.base_events.logger')
def test_transport_close_remove_writer(self, m_log):
remove_writer = self.loop._remove_writer = mock.Mock()
......
Fixed bug where calling write_eof() on a _SelectorSocketTransport after it's
already closed raises AttributeError.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment