From: Andrew Svetlov Date: Tue, 14 May 2019 21:39:13 +0000 (+0300) Subject: bpo-36801: Temporarily fix regression in writer.drain() (#13330) X-Git-Tag: v3.8.0b1~361 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=54b74fe9df89f0e5646736f1f60376b4e37c422c;p=thirdparty%2FPython%2Fcpython.git bpo-36801: Temporarily fix regression in writer.drain() (#13330) --- diff --git a/Lib/asyncio/streams.py b/Lib/asyncio/streams.py index 146a33818d95..2f0cbfdbe852 100644 --- a/Lib/asyncio/streams.py +++ b/Lib/asyncio/streams.py @@ -439,9 +439,7 @@ class StreamWriter: # Wait for protocol.connection_lost() call # Raise connection closing error if any, # ConnectionResetError otherwise - fut = self._protocol._get_close_waiter(self) - await fut - raise ConnectionResetError('Connection lost') + await sleep(0) await self._protocol._drain_helper() diff --git a/Lib/test/test_asyncio/test_streams.py b/Lib/test/test_asyncio/test_streams.py index 8d6a1d26ac19..258d8a7f7fdf 100644 --- a/Lib/test/test_asyncio/test_streams.py +++ b/Lib/test/test_asyncio/test_streams.py @@ -109,29 +109,6 @@ class StreamTests(test_utils.TestCase): self._basetest_open_connection_no_loop_ssl(conn_fut) - @unittest.skipIf(ssl is None, 'No ssl module') - def test_drain_on_closed_writer_ssl(self): - - async def inner(httpd): - reader, writer = await asyncio.open_connection( - *httpd.address, - ssl=test_utils.dummy_ssl_context()) - - messages = [] - self.loop.set_exception_handler(lambda loop, ctx: messages.append(ctx)) - writer.write(b'GET / HTTP/1.0\r\n\r\n') - data = await reader.read() - self.assertTrue(data.endswith(b'\r\n\r\nTest message')) - - writer.close() - with self.assertRaises(ConnectionResetError): - await writer.drain() - - self.assertEqual(messages, []) - - with test_utils.run_test_server(use_ssl=True) as httpd: - self.loop.run_until_complete(inner(httpd)) - def _basetest_open_connection_error(self, open_connection_fut): messages = [] self.loop.set_exception_handler(lambda loop, ctx: messages.append(ctx))