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);
>      }
> 

Reply via email to