When the network chardev is configured with 'server' and 'wait'
options, QEMU must block startup until the first client connects
to the server. This implies that the listener socket must be in
blocking mode. Unfortnantely on Win32 the socket is initially
in non-blocking mode, so we're not waiting for the first client.

Signed-off-by: Daniel P. Berrange <berra...@redhat.com>
---
 qemu-char.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/qemu-char.c b/qemu-char.c
index e0147f3..18890f7 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -4376,6 +4376,7 @@ static CharDriverState *qmp_chardev_open_socket(const 
char *id,
     if (is_listen && is_waitconnect) {
         fprintf(stderr, "QEMU waiting for connection on: %s\n",
                 chr->filename);
+        qio_channel_set_blocking(QIO_CHANNEL(s->listen_ioc), true, NULL);
         tcp_chr_accept(QIO_CHANNEL(s->listen_ioc), G_IO_IN, chr);
         qio_channel_set_blocking(QIO_CHANNEL(s->listen_ioc), false, NULL);
     }
-- 
2.5.0


Reply via email to