[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 07/11] python/aqmp: stop the server during disconnect()
From: |
John Snow |
Subject: |
[PULL 07/11] python/aqmp: stop the server during disconnect() |
Date: |
Mon, 7 Mar 2022 17:15:03 -0500 |
Before we allow the full separation of starting the server and accepting
new connections, make sure that the disconnect cleans up the server and
its new state, too.
Signed-off-by: John Snow <jsnow@redhat.com>
Acked-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20220225205948.3693480-8-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
---
python/qemu/aqmp/protocol.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/python/qemu/aqmp/protocol.py b/python/qemu/aqmp/protocol.py
index e2bdad542d..cdbc9cba0d 100644
--- a/python/qemu/aqmp/protocol.py
+++ b/python/qemu/aqmp/protocol.py
@@ -432,7 +432,7 @@ def _set_state(self, state: Runstate) -> None:
self._runstate_event.set()
self._runstate_event.clear()
- @bottom_half # However, it does not run from the R/W tasks.
+ @bottom_half
async def _stop_server(self) -> None:
"""
Stop listening for / accepting new incoming connections.
@@ -709,6 +709,7 @@ def _paranoid_task_erase(task:
Optional['asyncio.Future[_U]']
self._reader = None
self._writer = None
+ self._accepted = None
# NB: _runstate_changed cannot be cleared because we still need it to
# send the final runstate changed event ...!
@@ -732,6 +733,9 @@ async def _bh_disconnect(self) -> None:
def _done(task: Optional['asyncio.Future[Any]']) -> bool:
return task is not None and task.done()
+ # If the server is running, stop it.
+ await self._stop_server()
+
# Are we already in an error pathway? If either of the tasks are
# already done, or if we have no tasks but a reader/writer; we
# must be.
--
2.34.1
- [PULL 00/11] Python patches, John Snow, 2022/03/07
- [PULL 05/11] python/aqmp: squelch pylint warning for too many lines, John Snow, 2022/03/07
- [PULL 06/11] python/aqmp: refactor _do_accept() into two distinct steps, John Snow, 2022/03/07
- [PULL 07/11] python/aqmp: stop the server during disconnect(),
John Snow <=
- [PULL 03/11] python/aqmp: remove _new_session and _establish_connection, John Snow, 2022/03/07
- [PULL 01/11] python/aqmp: add _session_guard(), John Snow, 2022/03/07
- [PULL 04/11] python/aqmp: split _client_connected_cb() out as _incoming(), John Snow, 2022/03/07
- [PULL 10/11] python/aqmp: drop _bind_hack(), John Snow, 2022/03/07
- [PULL 02/11] python/aqmp: rename 'accept()' to 'start_server_and_accept()', John Snow, 2022/03/07
- [PULL 08/11] python/aqmp: add start_server() and accept() methods, John Snow, 2022/03/07
- [PULL 09/11] python/aqmp: fix race condition in legacy.py, John Snow, 2022/03/07
- [PULL 11/11] scripts/qmp-shell-wrap: Fix import path, John Snow, 2022/03/07
- Re: [PULL 00/11] Python patches, Peter Maydell, 2022/03/08