Skip to content

Commit 280130f

Browse files
gh-90467: StreamReaderProtocol - add strong reference to created task (GH-96323)
(cherry picked from commit e860e52) Co-authored-by: Kirill <[email protected]>
1 parent 19b94bc commit 280130f

File tree

3 files changed

+7
-1
lines changed

3 files changed

+7
-1
lines changed

Lib/asyncio/streams.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ def __init__(self, stream_reader, client_connected_cb=None, loop=None):
206206
self._strong_reader = stream_reader
207207
self._reject_connection = False
208208
self._stream_writer = None
209+
self._task = None
209210
self._transport = None
210211
self._client_connected_cb = client_connected_cb
211212
self._over_ssl = False
@@ -241,7 +242,7 @@ def connection_made(self, transport):
241242
res = self._client_connected_cb(reader,
242243
self._stream_writer)
243244
if coroutines.iscoroutine(res):
244-
self._loop.create_task(res)
245+
self._task = self._loop.create_task(res)
245246
self._strong_reader = None
246247

247248
def connection_lost(self, exc):
@@ -259,6 +260,7 @@ def connection_lost(self, exc):
259260
super().connection_lost(exc)
260261
self._stream_reader_wr = None
261262
self._stream_writer = None
263+
self._task = None
262264
self._transport = None
263265

264266
def data_received(self, data):

Misc/ACKS

+2
Original file line numberDiff line numberDiff line change
@@ -1428,6 +1428,7 @@ Ram Rachum
14281428
Jeffrey Rackauckas
14291429
Jérôme Radix
14301430
Burton Radons
1431+
Kirill (python273) R.
14311432
Abhilash Raj
14321433
Shorya Raj
14331434
Dhushyanth Ramasamy
@@ -1966,6 +1967,7 @@ Gordon Worley
19661967
Darren Worrall
19671968
Thomas Wouters
19681969
Daniel Wozniak
1970+
Simon Wrede
19691971
Marcin Niemira
19701972
Wei Wu
19711973
Heiko Wundram
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix :class:`asyncio.streams.StreamReaderProtocol` to keep a strong reference
2+
to the created task, so that it's not garbage collected

0 commit comments

Comments
 (0)