summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Grinberg <miguel.grinberg@gmail.com>2021-06-07 11:40:09 +0100
committerDamien George <damien@micropython.org>2021-06-08 15:10:50 +1000
commitde2e081260395f47d21bf39a97f3461df3d8b94f (patch)
tree47f0a4dc41bb1d506b61b02276ffabb7079c9be4
parent525a920ca5f284b7eb5875550ae0febcd1714a06 (diff)
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().
-rw-r--r--extmod/uasyncio/stream.py3
1 files changed, 1 insertions, 2 deletions
diff --git a/extmod/uasyncio/stream.py b/extmod/uasyncio/stream.py
index 395ff1f6a..2a259e618 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