[cvsnt] ipv6 handling in cvsnt is broken
arekm at maven.pl
Tue Nov 11 00:24:23 GMT 2008
On Monday 10 of November 2008, Tony Hoyle wrote:
> Arkadiusz Miskiewicz wrote:
> A couple of points:
> > This rule only applies to ::, not ::1.
> This is entirely irrelevant as there are only two possible cases. The
> code is written to handle both cases transparently, and does.
> $ netstat -an | grep 2402
> tcp 0 0 127.0.0.1:2402 0.0.0.0:*
> tcp6 0 0 ::1:2402 :::*
> $ netstat -an | grep 2401
> tcp6 0 0 :::2401 :::*
> cvsnt doesn't just cater for a couple of OSs - the commercial builds run
> on all sorts of environments and the code to handle these cases has to
> be (and is) robust.
> > You are wrong here. Tell me how to specify LockServer being ::1 with port
> > 432 in PServer config file? Parsing is done in cvsnt, I see strchr used
> > there for example.
With ipv6 address not hostname please.
Host ip6-localhost not found: 3(NXDOMAIN).
> I can see absolutely no reason why anyone would want to do this. The
> config is there to change the port in case there's a conflicting
To test what's broken in cvsnt for example. To use what's documented... Does
it matter? It's existing option and should work well.
Anyway I found out what was cause of my initial the problem. IPv4 socket hangt
in TIME_WAIT state so bind() failed with "address already in use" but IPv6
socket succeeded. That's why it was listening only on ::1 and not on
Due to logic flaw in CSocketIO::bind() (I mentioned in other mail in this
thread - bind() method succeeds when any bind succeeds) is started instead
of yelling about a problem.
ps. about getaddinfo() manual handling of error messages in
CSocketIO::create(). There is gai_strerror() which does what's done there
manually (but possibly handles more error codes).
Arkadiusz Miśkiewicz PLD/Linux Team
arekm / maven.pl http://ftp.pld-linux.org/
More information about the cvsnt