changeset: 105673:59eea8122df6 parent: 105670:dbf72357cb4a parent: 105672:fcc642bf88c1 user: Yury Selivanov date: Fri Dec 16 11:52:36 2016 -0500 files: Misc/NEWS description: Merge 3.6 (issue #28990) diff -r dbf72357cb4a -r 59eea8122df6 Lib/asyncio/sslproto.py --- a/Lib/asyncio/sslproto.py Fri Dec 16 16:18:57 2016 +0200 +++ b/Lib/asyncio/sslproto.py Fri Dec 16 11:52:36 2016 -0500 @@ -480,6 +480,7 @@ self._loop.call_soon(self._app_protocol.connection_lost, exc) self._transport = None self._app_transport = None + self._wakeup_waiter(exc) def pause_writing(self): """Called when the low-level transport's buffer goes over diff -r dbf72357cb4a -r 59eea8122df6 Lib/test/test_asyncio/test_sslproto.py --- a/Lib/test/test_asyncio/test_sslproto.py Fri Dec 16 16:18:57 2016 +0200 +++ b/Lib/test/test_asyncio/test_sslproto.py Fri Dec 16 11:52:36 2016 -0500 @@ -85,5 +85,15 @@ # Restore error logging. log.logger.setLevel(log_level) + def test_connection_lost(self): + # From issue #472. + # yield from waiter hang if lost_connection was called. + waiter = asyncio.Future(loop=self.loop) + ssl_proto = self.ssl_protocol(waiter) + self.connection_made(ssl_proto) + ssl_proto.connection_lost(ConnectionAbortedError) + test_utils.run_briefly(self.loop) + self.assertIsInstance(waiter.exception(), ConnectionAbortedError) + if __name__ == '__main__': unittest.main()