Break circular references when closing SSLTransport objects (#981) (#2049)
diff --git a/Lib/asyncio/sslproto.py b/Lib/asyncio/sslproto.py
index 6e9ce29..7948c4c 100644
--- a/Lib/asyncio/sslproto.py
+++ b/Lib/asyncio/sslproto.py
@@ -686,12 +686,14 @@
self._transport._force_close(exc)
def _finalize(self):
+ self._sslpipe = None
+
if self._transport is not None:
self._transport.close()
def _abort(self):
- if self._transport is not None:
- try:
+ try:
+ if self._transport is not None:
self._transport.abort()
- finally:
- self._finalize()
+ finally:
+ self._finalize()
diff --git a/Misc/NEWS b/Misc/NEWS
index 7bd46d5..213a6e9 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -49,6 +49,9 @@
Library
-------
+- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl
+ implementation. Patch by Michaël Sghaïer.
+
- bpo-29743: Closing transport during handshake process leaks open socket.
Patch by Nikolay Kim