Обсуждение: Re: freeaddrinfo2 changes.
Kurt Roeckx <Q@ping.be> writes:
> I just saw in the cvs web that you changed freeaddrinfo2 to not
> have the hint af anymore, and use the one from the struct addrinfo
> itself.
> This can break things.  If you called getaddrinfo2() with
> AF_UNSPEC, the version from the system can return an AF_UNIX
> socket.  For instance glibc 2.1 will do that.
If this is broken then it's probably not the only problem --- we rely on
sa.sa_family in other places.
        regards, tom lane
			
		On Mon, Jun 09, 2003 at 10:09:20AM -0400, Tom Lane wrote: > Kurt Roeckx <Q@ping.be> writes: > > I just saw in the cvs web that you changed freeaddrinfo2 to not > > have the hint af anymore, and use the one from the struct addrinfo > > itself. > > > This can break things. If you called getaddrinfo2() with > > AF_UNSPEC, the version from the system can return an AF_UNIX > > socket. For instance glibc 2.1 will do that. > > If this is broken then it's probably not the only problem --- we rely on > sa.sa_family in other places. sa.sa_family is not the problem itself, the problem is that if you use getaddrinfo with AF_UNSPEC, you can get more than replies with more than 1 address family. You will get atleast AF_INET, AF_INET6 if they exist for what you request, and maybe AF_UNIX or even others. Kurt
Kurt Roeckx <Q@ping.be> writes:
>> If this is broken then it's probably not the only problem --- we rely on
>> sa.sa_family in other places.
> sa.sa_family is not the problem itself, the problem is that if
> you use getaddrinfo with AF_UNSPEC, you can get more than replies
> with more than 1 address family. You will get atleast AF_INET,
> AF_INET6 if they exist for what you request, and maybe AF_UNIX or
> even others.
Oh, I see --- the problem is to tell the difference between an AF_UNIX
addrinfo built by getaddrinfo_unix and one returned by the system's
getaddrinfo.  Okay.
        regards, tom lane