Обсуждение: 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