On 09/03/2016 18:28, Daniel P. Berrange wrote: > 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.
Shall we set the blocking/non-blocking mode uniformly for all platforms? Or is that something has created a GSource and this put the socket in non-blocking mode? Paolo > 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); > } >