Merge 3.5 (issue #28990)

This commit is contained in:
Yury Selivanov 2016-12-16 11:51:57 -05:00
commit 11c135136d
3 changed files with 15 additions and 0 deletions

View File

@ -480,6 +480,7 @@ class SSLProtocol(protocols.Protocol):
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

View File

@ -85,5 +85,15 @@ class SslProtoHandshakeTests(test_utils.TestCase):
# 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()

View File

@ -44,6 +44,10 @@ Library
now when the grp module cannot be imported, as for example on Android
platforms.
- Issue #28990: Fix SSL hanging if connection is closed before handshake
completed.
(Patch by HoHo-Ho)
Windows
-------