After upgrade from previous version I can't run rsync. 2004/05/09 10:40:54 [18630] rsyncd version 2.6.2 starting, listening on port 873 2004/05/09 10:40:54 [18630] rsync error: error in socket IO (code 10) at socket.c(466) strace shows that there is problem with listen() I've found patch on this lists: --- rsync-2.6.2/socket.c.orig 2004-05-08 23:25:11.979473336 +0200 +++ rsync-2.6.2/socket.c 2004-05-08 23:27:13.255036648 +0200 @@ -379,8 +379,8 @@ #ifdef IPV6_V6ONLY if (resp->ai_family == AF_INET6) { - setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, - (char *)&one, sizeof one); + if(setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&one, sizeof one) < 0) + continue; } #endif But it did not helped Is there any solution? What more info can I give you to solve that? -- pozdr. Pawe? Go?aszewski --------------------------------- worth to see: http://www.againsttcpa.com/ CPU not found - software emulation...
On Sun, May 09, 2004 at 11:21:12AM +0200, Pawe? Go?aszewski wrote:> Is there any solution?The current solution is to run rsync using either the -6 or the -4 option (either should work, but -4 will limit rsync to listening for IPv4 connections). I believe that this problem only affects older versions of Linux where the kernel doesn't handle IPv6 sockets quite right. The CVS version of rsync has been modified to suggest this solution to the user. A better solution would be to notice that the two sockets were overlapping and to eliminate the IPv4-only one (using the IPv6 one that is accepting both IPv6 and IPv4 connections because it wouldn't let us set it to be IPv6 only). If someone would like to submit such a patch, feel free. (The patch you cited eliminates the combo IPv6/IPv4 socket, which is the opposite of what I want.) ..wayne..
On Sun, 9 May 2004, Pawe? Go?aszewski wrote:> > After upgrade from previous version I can't run rsync. > > 2004/05/09 10:40:54 [18630] rsyncd version 2.6.2 starting, listening on port 873 > 2004/05/09 10:40:54 [18630] rsync error: error in socket IO (code 10) at socket.c(466) > > strace shows that there is problem with listen() > > I've found patch on this lists: > --- rsync-2.6.2/socket.c.orig 2004-05-08 23:25:11.979473336 +0200 > +++ rsync-2.6.2/socket.c 2004-05-08 23:27:13.255036648 +0200 > @@ -379,8 +379,8 @@ > > #ifdef IPV6_V6ONLY > if (resp->ai_family == AF_INET6) { > - setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, > - (char *)&one, sizeof one); > + if(setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&one, sizeof one) < 0) > + continue; > } > #endif > > > But it did not helped > > Is there any solution? What more info can I give you to solve that?The problem seems to be: "IPV6_V6ONLY" is not defined. It's only defined in glibc-2.3.3 and above. The kernel-headers have it if your kernel is recent enough, but for rsync compilation the glibc header is used and that may not have it as well ... You could add this hunk before: +#if !defined(IPV6_V6ONLY) && defined(__linux__) +#define IPV6_V6ONLY 26 +#endif> >-- with kind regards (mit freundlichem Grinsen), Ruediger Oertel (ro@suse.de,bugfinder@t-online.de) -------------------------------------------------------- Linux Fatou 2.6.5-7.3-smp #1 SMP Sat Apr 17 10:16:22 UTC 2004 x86_64 Key fingerprint = 17DC 6553 86A7 384B 53C5 CA5C 3CE4 F2E7 23F2 B417