gh-90467: StreamReaderProtocol - add strong reference to created task (#96323)

This commit is contained in:
Kirill 2022-08-27 22:32:01 +03:00 committed by GitHub
parent 6fbd889d6e
commit e860e521ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 1 deletions

View file

@ -205,6 +205,7 @@ class StreamReaderProtocol(FlowControlMixin, protocols.Protocol):
self._strong_reader = stream_reader self._strong_reader = stream_reader
self._reject_connection = False self._reject_connection = False
self._stream_writer = None self._stream_writer = None
self._task = None
self._transport = None self._transport = None
self._client_connected_cb = client_connected_cb self._client_connected_cb = client_connected_cb
self._over_ssl = False self._over_ssl = False
@ -247,7 +248,7 @@ class StreamReaderProtocol(FlowControlMixin, protocols.Protocol):
res = self._client_connected_cb(reader, res = self._client_connected_cb(reader,
self._stream_writer) self._stream_writer)
if coroutines.iscoroutine(res): if coroutines.iscoroutine(res):
self._loop.create_task(res) self._task = self._loop.create_task(res)
self._strong_reader = None self._strong_reader = None
def connection_lost(self, exc): def connection_lost(self, exc):
@ -265,6 +266,7 @@ class StreamReaderProtocol(FlowControlMixin, protocols.Protocol):
super().connection_lost(exc) super().connection_lost(exc)
self._stream_reader_wr = None self._stream_reader_wr = None
self._stream_writer = None self._stream_writer = None
self._task = None
self._transport = None self._transport = None
def data_received(self, data): def data_received(self, data):

View file

@ -1442,6 +1442,7 @@ Ram Rachum
Jeffrey Rackauckas Jeffrey Rackauckas
Jérôme Radix Jérôme Radix
Burton Radons Burton Radons
Kirill (python273) R.
Abhilash Raj Abhilash Raj
Shorya Raj Shorya Raj
Ajith Ramachandran Ajith Ramachandran
@ -1987,6 +1988,7 @@ Gordon Worley
Darren Worrall Darren Worrall
Thomas Wouters Thomas Wouters
Daniel Wozniak Daniel Wozniak
Simon Wrede
Marcin Niemira Marcin Niemira
Wei Wu Wei Wu
Heiko Wundram Heiko Wundram

View file

@ -0,0 +1,2 @@
Fix :class:`asyncio.streams.StreamReaderProtocol` to keep a strong reference
to the created task, so that it's not garbage collected