SwarmConn: don't access Swarm.manager

Open a local nursery instead.
This commit is contained in:
mhchia 2020-02-04 21:57:11 +08:00
parent 0548d28568
commit f884bfa39e
No known key found for this signature in database
GPG Key ID: 389EFBEA1362589A

View File

@ -56,13 +56,14 @@ class SwarmConn(INetConn):
async def _handle_new_streams(self) -> None: async def _handle_new_streams(self) -> None:
self.event_started.set() self.event_started.set()
while True: async with trio.open_nursery() as nursery:
try: while True:
stream = await self.muxed_conn.accept_stream() try:
except MuxedConnUnavailable: stream = await self.muxed_conn.accept_stream()
break except MuxedConnUnavailable:
# Asynchronously handle the accepted stream, to avoid blocking the next stream. break
self.swarm.manager.run_task(self._handle_muxed_stream, stream) # Asynchronously handle the accepted stream, to avoid blocking the next stream.
nursery.start_soon(self._handle_muxed_stream, stream)
await self.close() await self.close()