Orit Wasserman <owass...@redhat.com> writes: > 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.
Almost there for connect. I'm afraid we have a similar problem with listen: we bind only on the first address that works. Shouldn't we bind all of them? http://www.akkadia.org/drepper/userapi-ipv6.html