freeaddrinfo2 changes.

Started by Kurt Roeckxover 22 years ago4 messages
#1Kurt Roeckx
Q@ping.be

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.

The reason freeaddrinfo2 had the hint_ai_family is because that's
how you know we called getaddrinfo_unix, and we allocated the
memory ourself there.

Could you please reverse that change?

Kurt

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Kurt Roeckx (#1)
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

#3Kurt Roeckx
Q@ping.be
In reply to: Tom Lane (#2)
Re: freeaddrinfo2 changes.

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

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Kurt Roeckx (#3)
Re: freeaddrinfo2 changes.

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