On Apr 28, 2011, at 11:52 AM, Doug Barton wrote: >> Agreed. Akamai's EdgeSuite doesn't provide IPv6 AAAA records at this time, >> but e3191.c.akamaiedge.net does have an A record. > > I understand what you're saying, but I've always referred to such a thing as > an "empty CNAME chain" because it doesn't result in an address record at the > end. Is there a more proper term for it?
RFC-1034 talks about CNAME chains: "Of course, by the robustness principle, domain software should not fail when presented with CNAME chains or loops; CNAME chains should be followed and CNAME loops signalled as an error. ...and the recursive query algorithm: "If recursive service is requested and available, the recursive response to a query will be one of the following: - The answer to the query, possibly preface by one or more CNAME RRs that specify aliases encountered on the way to an answer. - A name error indicating that the name does not exist. This may include CNAME RRs that indicate that the original query name was an alias for a name which does not exist. - A temporary error indication." This phrase "name does not exist" appears to best be represented as EAI_NONAME. >>>> should getaddrinfo() return EAI_NONAME or EAI_FAIL? >>> >>> RFC 3493 says: >>> >>> [EAI_NONAME] The name does not resolve for the supplied >>> parameters. Neither nodename nor servname were >>> supplied. At least one of these must be supplied. >>> >>> [EAI_FAIL] A non-recoverable error occurred when attempting to >>> resolve the name. >>> >>> Which means that it should probably return EAI_NONAME; it's the least >>> bad error code among the ones listed in RFC 3493 for getaddrinfo(), >>> although one should not be mislead to think that this means that the >>> DNS said NXDOMAIN. >> >> +1 to this analysis as well. > > The original question that started me down the rabbit hole was, "What error > code should 'ping6 www.apple.com' return?" Well, it appears that some other folks expect EAI_NONAME: http://www.freebsd.org/cgi/query-pr.cgi?pr=156684 ...and the MacOSX version of ping6 uses it for this case: % ping6 www.apple.com ping6: getaddrinfo -- nodename nor servname provided, or not known > What confuses me here is that the node does actually "exist" in the sense > that there is _an_ address record for it. So attempting to look at this from > the standpoint of a user, the error message I get back (in our case, > "hostname or servname not provided, or not known") doesn't make any sense. > (Although admittedly the "does not resolve for the supplied parameters" part > of the definition does seem to.) Since for the purpose of ping6 no AAAA > record at the end of the chain is a non-recoverable error, _FAIL > ("non-recoverable failure in name resolution") seems to make more sense. If the nameserver returned a failure (ie, NXDOMAIN, SERVFAIL), then I would agree with EAI_FAIL. However, it didn't fail; you just asked a question which it answered successfully by providing all of the data which matched the query type; ie, the CNAMES up to the end of the chain, but not including the A record which terminates it, since you asked for an AAAA instead. > Is it possible that what we need is a new error code to designate "something > exists here, just not what you asked for?" If _NONAME is intended to indicate > that it seems overloaded. Alternatively I think we need to improve the > language of our error messages. :-/ As Harvard mentioned, EAI_NODATA? :-) Regards, -- -Chuck _______________________________________________ bind-users mailing list bind-users@lists.isc.org https://lists.isc.org/mailman/listinfo/bind-users