[cvsnt] ipv6 handling in cvsnt is broken

Arkadiusz Miskiewicz arekm at maven.pl
Mon Nov 10 23:13:02 GMT 2008


On Monday 10 of November 2008, Tony Hoyle wrote:
> Arkadiusz Miskiewicz wrote:
>
> Again.  You're trying to claim something is broken that I use every day.

You don't use it in a way that triggers brokeness. 

> I even posted examples of it working correctly.  You can check yourself
> by connecting to cvs.cvsnt.org over ipv6.

Show me how to connect to it using cvsnt client by specifing IPv6 address (+ 
port) and not hostname please.

> Please read http://www.cvsnt.org/wiki/BugReporting and provide all the
> information requested.

cvslockd binding issue - forget about it (works for me now with that little 
patch)

[ipv6]:port issue - what do you need more beside what's in this thread?

>
> Unless enough information is given to reproduce a problem then it's
> premature to start posting a 'fix' (especially an OS specific one, and
> *especially* when you haven't even said which OS its for).

This itself is not a fix but a change that makes stable behaviour - IPv6 
separate from IPv4 (ipv6 is handled via one socket, ipv4 is handled via 
second socet) on any system supporting IPV6_V6ONLY regardless of system 
default settings like linux net.ipv6.bindv6only sysctl).

It's cleaner, simpler (no one has to thing about handling IPv4-mapped IPv6 
addresses in scripts/acl/whatever that sees ip address for example) way to 
handle IPv4 traffic when IPv6 is in use, too.

(yes, it also "fixes" my issue (unknown reason yet) but that's another story)

> > Somehow cvslockd is bound only to ::1 and not 127.0.0.1 here. Which
> > is weird since getaddrinfo(NULL seems to be used).
>
> If getaddrinfo is broken then no software is going to work correctly.
> This is an issue for your OS vendor to fix.  Attempting to modify all
> the software on your computer to work around it is futile.

That's not getaddrinfo fault since it returns both families (PF_INET6 and 
PF_INET) in addrinfo linked list. Anyway - leave this issue behind since 
fixing it requires me to know exactly what's happening on that machine when 
cvsnt tries to bind. Fix [ipv6]:port issue and I'll be happy...

CSocketIO::bind() also does weird thing - it assumes that single succeeded 
bind is "enough". It's not. There are various errors (other that IPv6 with 
IPV6_V6ONLY being default off type of tcp stack) where bind can fail and 
these errors are just siletnly ignored. 

> Tony

-- 
Arkadiusz Miśkiewicz        PLD/Linux Team
arekm / maven.pl            http://ftp.pld-linux.org/


More information about the cvsnt mailing list