From de2e081260395f47d21bf39a97f3461df3d8b94f Mon Sep 17 00:00:00 2001 From: Miguel Grinberg Date: Mon, 7 Jun 2021 11:40:09 +0100 Subject: [PATCH] extmod/uasyncio: Fix start_server and wait_closed race condition. This fix prevents server.wait_closed() from raising an AttributeError when trying to access server.task. This can happen if it is called immediately after start_server(). --- extmod/uasyncio/stream.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/extmod/uasyncio/stream.py b/extmod/uasyncio/stream.py index 395ff1f6af..2a259e618f 100644 --- a/extmod/uasyncio/stream.py +++ b/extmod/uasyncio/stream.py @@ -112,7 +112,6 @@ class Server: s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(ai[-1]) s.listen(backlog) - self.task = core.cur_task # Accept incoming connections while True: try: @@ -135,7 +134,7 @@ class Server: # TODO could use an accept-callback on socket read activity instead of creating a task async def start_server(cb, host, port, backlog=5): s = Server() - core.create_task(s._serve(cb, host, port, backlog)) + s.task = core.create_task(s._serve(cb, host, port, backlog)) return s