[cvsnt] ipv6 handling in cvsnt is broken

Arkadiusz Miskiewicz arekm at maven.pl
Tue Nov 11 00:24:23 GMT 2008


Community technical support mailing list was retired 2010 and replaced with a professional technical support team. For assistance please contact: Pre-sales Technical support via email to sales@march-hare.com.


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:*
> LISTEN
> tcp6       0      0 ::1:2402                :::*
> LISTEN
>
> $ netstat -an | grep 2401
> tcp6       0      0 :::2401                 :::*
> LISTEN
>
> 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.
>
> ip6-localhost:432

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
> application. 

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 
127.0.0.1.  

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 mailing list
Download the latest CVSNT, TortosieCVS, WinCVS etc. for Windows 8 etc.
@CVSNT on Twitter   CVSNT on Facebook