]> granicus.if.org Git - python/commitdiff
asyncio: Break reference cycle in StreamReaderProtocol.connection_lost
authorYury Selivanov <yselivanov@sprymix.com>
Fri, 13 May 2016 19:58:00 +0000 (15:58 -0400)
committerYury Selivanov <yselivanov@sprymix.com>
Fri, 13 May 2016 19:58:00 +0000 (15:58 -0400)
Lib/asyncio/streams.py

index 0008d514508a90472f2fbda2ce5f6f49de5ad2df..b7b0485aa0bf0cf6da4b16b0864dc7286709033c 100644 (file)
@@ -242,11 +242,14 @@ class StreamReaderProtocol(FlowControlMixin, protocols.Protocol):
                 self._loop.create_task(res)
 
     def connection_lost(self, exc):
-        if exc is None:
-            self._stream_reader.feed_eof()
-        else:
-            self._stream_reader.set_exception(exc)
+        if self._stream_reader is not None:
+            if exc is None:
+                self._stream_reader.feed_eof()
+            else:
+                self._stream_reader.set_exception(exc)
         super().connection_lost(exc)
+        self._stream_reader = None
+        self._stream_writer = None
 
     def data_received(self, data):
         self._stream_reader.feed_data(data)