On 02/03/2010 08:55, Stacey Marshall wrote:
What is the return code from res_init()? The sample code does not check!
An additional safety enhancement to res_init/res_ninit is to set the number of
name servers
to zero when malloc fails to allocate additional space required to hold
information used for IPv6.
The following is extract from res_init.c:
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libresolv2/common/resolv/res_init.c#250
243 statp->_u._ext.nscount = 0;
244 statp->_u._ext.ext = malloc(sizeof(*statp->_u._ext.ext));
245 if (statp->_u._ext.ext != NULL) {
246 memset(statp->_u._ext.ext, 0,
sizeof(*statp->_u._ext.ext));
247 statp->_u._ext.ext->nsaddrs[0].sin = statp->nsaddr;
248 strcpy(statp->_u._ext.ext->nsuffix, "ip6.arpa");
249 strcpy(statp->_u._ext.ext->nsuffix2, "ip6.int");
250 } else {
251 /*
252 * Historically res_init() rarely, if at all, failed.
253 * Examples and applications exist which do not check
254 * our return code. Furthermore several applications
255 * simply call us to get the systems domainname. So
256 * rather then immediately fail here we store the
257 * failure, which is returned later, in h_errno. And
258 * prevent the collection of 'nameserver' information
259 * by setting maxns to 0. Thus applications that fail
260 * to check our return code wont be able to make
261 * queries anyhow.
262 */
263 RES_SET_H_ERRNO(statp, NETDB_INTERNAL);
264 maxns = 0;
Regards Stacey
return code is 0.
Actually I modified the library code so just before it returns I print
its rc and nscount - and rc is 0 and nscount is 2, but then in my test
code I can't see it and I get rc 0 but nscount 0 as well.
I think me and Dan found the issue - see his response in this thread.
--
Robert Milkowski
http://milek.blogspot.com
_______________________________________________
opensolaris-code mailing list
opensolaris-code@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code