From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:54448) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TG5Nb-0007Sg-D5 for qemu-devel@nongnu.org; Mon, 24 Sep 2012 05:55:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TG5NU-0006rG-MJ for qemu-devel@nongnu.org; Mon, 24 Sep 2012 05:55:07 -0400 Received: from mx1.redhat.com ([209.132.183.28]:22185) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TG5NU-0006rA-C8 for qemu-devel@nongnu.org; Mon, 24 Sep 2012 05:55:00 -0400 From: Markus Armbruster References: <1348411747-29804-1-git-send-email-owasserm@redhat.com> Date: Mon, 24 Sep 2012 11:54:56 +0200 In-Reply-To: <1348411747-29804-1-git-send-email-owasserm@redhat.com> (Orit Wasserman's message of "Sun, 23 Sep 2012 16:49:03 +0200") Message-ID: <87sja7rbin.fsf@blackfin.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [Qemu-devel] [PATCH v4 0/4] nonblocking connect address handling cleanup List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Orit Wasserman Cc: kwolf@redhat.com, aliguori@us.ibm.com, akong@redhat.com, mst@redhat.com, quintela@redhat.com, mdroth@linux.vnet.ibm.com, qemu-devel@nongnu.org, pbonzini@redhat.com, lcapitulino@redhat.com Orit Wasserman writes: > Changes from v3: > - add missing parenthesis QEMU_SOCKET_RC_INPROGRESS macro > - remove "block" from dummy_opts > - remove in_progress from external API (inet_connect_opts and > inet_nonblocking_connect) > - Allocate ConnectState inside inet_connect_opts, this make the > structure internal to qemu-sockets.c > - fix migrate_fd_cleanup to handle invalid fd. > > Changes from v2: > - remove the use of getnameinfo > - remove errp for inet_connect_addr > - remove QemuOpt "block" > - fix errors in wait_for_connect > - pass ConnectState as a parameter to allow concurrent connect ops > > getaddrinfo can give us a list of addresses, but we only try to > connect to the first one. If that fails we never proceed to > the next one. This is common on desktop setups that often have ipv6 > configured but not actually working. > A simple way to reproduce the problem is migration: > for the destination use -incoming tcp:0:4444, run migrate -d tcp:localhost:4444 > migration will fail on hosts that have both IPv4 and IPV6 address for localhost. > > To fix this, refactor address resolution code and make inet_nonblocking_connect > retry connection with a different address. Good work, I'm down to nitpicking now :)