POSIX.1-2001 and 2008 say that if the hints argument of getaddrinfo() is NULL, then the behavior shall be as if it referred to a structure containing the value zero for the ai_flags, ai_socktype, and ai_protocol fields, and AF_UNSPEC for the ai_family field. However, glibc defines ai_flags as AI_V4MAPPED | AI_ADDRCONFIG for this case. Is this deviation from POSIX.1 intentional? Should it be fixed?
(In reply to comment #0) > Should it be fixed? No. Like several other things in the getaddrinfo spec this is non-optimal at best. The defaults used in glibc are much better.
Subject: Re: getaddrinfo() hints==NULL (ai_flags) deviates from POSIX.1 On Mon, Aug 31, 2009 at 2:14 PM, drepper at redhat dot com<sourceware-bugzilla@sourceware.org> wrote: > > ------- Additional Comments From drepper at redhat dot com 2009-08-31 12:14 ------- > (In reply to comment #0) >> Should it be fixed? > > No. Like several other things in the getaddrinfo spec this is non-optimal at > best. The defaults used in glibc are much better. Thanks. I'll update the man page to make it clear that this choice is deliberate.
Can some details be added as to why the glibc defaults are better than the POSIX standard. The default only applies if hints==NULL. If the POSIX defaults are non-optimal, then users of other systems (e.g. Solaris) would find it useful to know that different settings are preferred. On Solaris 10, setting hints to NULL results in POSIX defined behaviour. Are the reasons behind glibc's defaults unique to glibc or are they related to network effects which would apply to any OS or C resolver library. If the settings are valid everywhere then getaddrinfo() users would benefit from using them on non-glibc platforms. Thanks.