python/machine: use connect-based interface for existing sockets
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> Message-id: 20230517163406.2593480-4-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
parent
b8d4ca1823
commit
7f5f3ae7d5
|
@ -337,18 +337,17 @@ def _pre_launch(self) -> None:
|
||||||
self._remove_files.append(self._console_address)
|
self._remove_files.append(self._console_address)
|
||||||
|
|
||||||
if self._qmp_set:
|
if self._qmp_set:
|
||||||
monitor_address = None
|
|
||||||
sock = None
|
sock = None
|
||||||
if self._monitor_address is None:
|
if self._monitor_address is None:
|
||||||
self._sock_pair = socket.socketpair()
|
self._sock_pair = socket.socketpair()
|
||||||
sock = self._sock_pair[1]
|
sock = self._sock_pair[1]
|
||||||
if isinstance(self._monitor_address, str):
|
if isinstance(self._monitor_address, str):
|
||||||
self._remove_files.append(self._monitor_address)
|
self._remove_files.append(self._monitor_address)
|
||||||
monitor_address = self._monitor_address
|
|
||||||
self._qmp_connection = QEMUMonitorProtocol(
|
self._qmp_connection = QEMUMonitorProtocol(
|
||||||
address=monitor_address,
|
address=self._monitor_address,
|
||||||
sock=sock,
|
sock=sock,
|
||||||
server=True,
|
server=bool(self._monitor_address),
|
||||||
nickname=self._name
|
nickname=self._name
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -370,7 +369,10 @@ def _post_launch(self) -> None:
|
||||||
if self._sock_pair:
|
if self._sock_pair:
|
||||||
self._sock_pair[0].close()
|
self._sock_pair[0].close()
|
||||||
if self._qmp_connection:
|
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:
|
def _close_qemu_log_file(self) -> None:
|
||||||
if self._qemu_log_file is not None:
|
if self._qemu_log_file is not None:
|
||||||
|
|
Loading…
Reference in a new issue