On Wed, Aug 19, 2020 at 12:20:19AM +0200, Klemens Nanni wrote: > On Tue, Aug 18, 2020 at 09:58:56AM +0200, Sasha Romijn wrote: > > The current openrsync client is not able to connect to dual-stack remote > > hosts, when the local host does not have any IPv4 connectivity. This is > > because connect() fails with EADDRNOTAVAIL when trying to connect to the > > remote IPv4 address on an IPv6-only local host - and IPv4 seems to be > > attempted first. The current client does not try other remote host > > addresses after EADDRNOTAVAIL, and therefore never tries the remote IPv6 > > address. > For openrsync(1) this won't happen with `family inet6 inet4' in > resolv.conf(5). > > > The included patch allows the client to continue after EADDRNOTAVAIL, > > making it to try other addresses, until it reaches a working IPv6 address. > > If the local host is IPv6-only and the remote host IPv4-only, the > > connection still fails with an error produced from rsync_connect(). > Your diff reads correct to me, thanks; regular rsync(1) connects fine > regardless of `family'. > > > Perhaps a warning should be issued for the EADDRNOTAVAIL case, like it does > > for EHOSTUNREACH - but I thought it would be a bit much, as an IPv6-only > > host would then emit warnings on pretty much every single use of the > > openrsync client. > Yes, I don't think a warning is warrented here - afterall it can connect > without problems. > > OK to commit anyone? >
Sorry for being late to the party. Should we maybe inline inet_connect into rsync_connect and ignore all connect(3) errors and try the host? That's what ssh is doing in ssh_connect_direct() -- I'm not entirely sure you are real.