pcp
[Top] [All Lists]

Re: [pcp] QA status

Subject: Re: [pcp] QA status
From: Dave Brolley <brolley@xxxxxxxxxx>
Date: Mon, 04 Mar 2013 13:53:30 -0500
Cc: PCP <pcp@xxxxxxxxxxx>
Delivered-to: pcp@xxxxxxxxxxx
In-reply-to: <1455610989.13591426.1362377214431.JavaMail.root@xxxxxxxxxx>
References: <1455610989.13591426.1362377214431.JavaMail.root@xxxxxxxxxx>
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130219 Thunderbird/17.0.3

On 03/04/2013 01:06 AM, Nathan Scott wrote:

OK, I'm at 100% pass rate for NSS-enabled-builds, and I have two
failures in the "native" sockets implementation, which are probably
the ones you've already seen & mentioned.  273 and 430, both look
related to pmlogger (or pmlogger PDUs) and IPv6.

 From looking into 273, it looks like in native mode, we end up in
a getaddrinfo() loop passing over several IPv6 addresses, etc before
we find the IPv4 address where the connection succeeds.  Strangely,
I thought, that this passes with NSS but not without.  Looking into
the code, it seems the NSS implementation of __pmGetAddrInfo doesnt
actually call PR_GetAddrInfoByName, rather it uses PR_GetHostByName?
Whereas the native variant does use getaddrinfo ... could this be
why it passes on NSS-enabled builds?  Seems a bit odd.

This is the part of 273 that is failing - there are an unexpectedly
high number of calls (and diagnostics) from __pmSetSocketIPC(), as a
result of the additional calls to __pmInitSocket, as a result of
iterating over several possible addresses (3 x IPv6?) I guess:
This all looks normal to me. There is no specified order in which the addresses may be presented in the address chain, however, I have observed that the NSPR implementation does tend to present the IPv4 addresses first where the native implementation tends to present IPv6 addresses first. That is why there are extra calls to __pmSetSocketIPC() for the native implementation when attempting to connect to pmlogger. The test harness needs to be updated in order to expect an unspecified number of calls to __pmSetSocketIPC(), since we have no way of easily knowing how the local network is configured.

Having said that, gethostbyname() (via PR_GetHostByName()) is deprecated in favour of getaddrinfo(), so the NSPR implementation should be changed to call PR_GetAddrInfoByName() which is documented to be equivalent to getaddrinfo(). I'll take care of that today.

It looks like we're very close! I still would like to implement access wildcards for IPv6 addresses before we release anything, it would be nice to get all of teh core components listening on IPv6 and, as you have said, some IPv6-specific testing is in order.

Dave

<Prev in Thread] Current Thread [Next in Thread>