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.

Reply via email to