[cvsnt] ipv6 handling in cvsnt is broken
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
[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.
Arkadiusz Miśkiewicz PLD/Linux Team
arekm / maven.pl http://ftp.pld-linux.org/
More information about the cvsnt