From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41662) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1adiE5-0001Mc-TX for qemu-devel@nongnu.org; Wed, 09 Mar 2016 12:48:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1adiE1-0003ap-MV for qemu-devel@nongnu.org; Wed, 09 Mar 2016 12:48:49 -0500 Received: from mx1.redhat.com ([209.132.183.28]:35318) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1adiE1-0003ah-HD for qemu-devel@nongnu.org; Wed, 09 Mar 2016 12:48:45 -0500 References: <1457544504-8548-1-git-send-email-berrange@redhat.com> <1457544504-8548-14-git-send-email-berrange@redhat.com> From: Paolo Bonzini Message-ID: <56E061F8.5070506@redhat.com> Date: Wed, 9 Mar 2016 18:48:40 +0100 MIME-Version: 1.0 In-Reply-To: <1457544504-8548-14-git-send-email-berrange@redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v1 13/21] char: ensure listener socket is in blocking mode when waiting List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Daniel P. Berrange" , qemu-devel@nongnu.org Cc: Stefan Weil , Andrew Baumann 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 > --- > 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); > } >