Skip to content

Commit 3fc5d37

Browse files
authored
Server_async[udp], solve 3.1.1 problem. (#1564)
This reverts commit 755dcf3.
1 parent acbb864 commit 3fc5d37

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

pymodbus/server/async_io.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -818,6 +818,7 @@ def __init__(
818818
self.protocol = None
819819
self.endpoint = None
820820
self.on_connection_terminated = None
821+
self.stop_serving = self.loop.create_future()
821822
# asyncio future that will be done once server has started
822823
self.serving = asyncio.Future()
823824
self.factory_parms = {
@@ -841,6 +842,7 @@ async def serve_forever(self):
841842
raise RuntimeError(exc) from exc
842843
Log.info("Server(UDP) listening.")
843844
self.serving.set_result(True)
845+
await self.stop_serving
844846
else:
845847
raise RuntimeError(
846848
"Can't call serve_forever on an already running server object"
@@ -854,10 +856,13 @@ async def server_close(self):
854856
"""Close server."""
855857
if self.endpoint:
856858
self.endpoint.running = False
859+
if not self.stop_serving.done():
860+
self.stop_serving.set_result(True)
857861
if self.endpoint is not None and self.endpoint.handler_task is not None:
858862
self.endpoint.handler_task.cancel()
859863
if self.protocol is not None:
860864
self.protocol.close()
865+
# TBD await self.protocol.wait_closed()
861866
self.protocol = None
862867

863868

0 commit comments

Comments
 (0)