Skip to content

Commit 126ec34

Browse files
gh-90467: StreamReaderProtocol - add strong reference to created task (GH-96323) (#96344)
(cherry picked from commit e860e52) Co-authored-by: Kirill <[email protected]> Co-authored-by: Kirill <[email protected]>
1 parent 16d8948 commit 126ec34

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
@@ -248,7 +249,7 @@ def connection_made(self, transport):
248249
res = self._client_connected_cb(reader,
249250
self._stream_writer)
250251
if coroutines.iscoroutine(res):
251-
self._loop.create_task(res)
252+
self._task = self._loop.create_task(res)
252253
self._strong_reader = None
253254

254255
def connection_lost(self, exc):
@@ -266,6 +267,7 @@ def connection_lost(self, exc):
266267
super().connection_lost(exc)
267268
self._stream_reader_wr = None
268269
self._stream_writer = None
270+
self._task = None
269271
self._transport = None
270272

271273
def data_received(self, data):

Misc/ACKS

+2
Original file line numberDiff line numberDiff line change
@@ -1438,6 +1438,7 @@ Ram Rachum
14381438
Jeffrey Rackauckas
14391439
Jérôme Radix
14401440
Burton Radons
1441+
Kirill (python273) R.
14411442
Abhilash Raj
14421443
Shorya Raj
14431444
Ajith Ramachandran
@@ -1981,6 +1982,7 @@ Gordon Worley
19811982
Darren Worrall
19821983
Thomas Wouters
19831984
Daniel Wozniak
1985+
Simon Wrede
19841986
Marcin Niemira
19851987
Wei Wu
19861988
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)