diff mbox series

[3/5] python/machine: use connect-based interface for existing sockets

Message ID 20230517163406.2593480-4-jsnow@redhat.com (mailing list archive)
State New, archived
Headers show
Series python: backport socket changes from python-qemu-qmp | expand

Commit Message

John Snow May 17, 2023, 4:34 p.m. UTC
Instead of using accept() with sockets (which uses open_with_socket()),
use calls to connect() to utilize existing sockets instead. A benefit of
this is more robust error handling already present within the connect()
call that isn't present in open_with_socket().

Signed-off-by: John Snow <jsnow@redhat.com>
---
 python/qemu/machine/machine.py | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/python/qemu/machine/machine.py b/python/qemu/machine/machine.py
index e57c254484..cc636cb6bd 100644
--- a/python/qemu/machine/machine.py
+++ b/python/qemu/machine/machine.py
@@ -337,18 +337,17 @@  def _pre_launch(self) -> None:
             self._remove_files.append(self._console_address)
 
         if self._qmp_set:
-            monitor_address = None
             sock = None
             if self._monitor_address is None:
                 self._sock_pair = socket.socketpair()
                 sock = self._sock_pair[1]
             if isinstance(self._monitor_address, str):
                 self._remove_files.append(self._monitor_address)
-                monitor_address = self._monitor_address
+
             self._qmp_connection = QEMUMonitorProtocol(
-                address=monitor_address,
+                address=self._monitor_address,
                 sock=sock,
-                server=True,
+                server=bool(self._monitor_address),
                 nickname=self._name
             )
 
@@ -370,7 +369,10 @@  def _post_launch(self) -> None:
         if self._sock_pair:
             self._sock_pair[0].close()
         if self._qmp_connection:
-            self._qmp.accept(self._qmp_timer)
+            if self._sock_pair:
+                self._qmp.connect()
+            else:
+                self._qmp.accept(self._qmp_timer)
 
     def _close_qemu_log_file(self) -> None:
         if self._qemu_log_file is not None: