Subject: Re: bin/12876: NetBSD's INET6 patches to Postfix break non-INET6 features!
To: None <itojun@iijlab.net>
From: Greg A. Woods <woods@weird.com>
List: netbsd-bugs
Date: 05/09/2001 11:35:45
[ On Wednesday, May 9, 2001 at 11:13:15 (+0900), itojun@iijlab.net wrote: ]
> Subject: Re: bin/12876: NetBSD's INET6 patches to Postfix break non-INET6 features! 
>
> 	try gnu/dist/postfix/src/smtpd/smtpd_peer.c revision 1.3.

I don't have to try it to know that it absolutely cannot work.  You did
not apply my changes.  You could not have done the tests I suggested, at
least not without -DINET6 or you too would know that your commit doesn't
fix the bug.

Please apply *all* of my changes, exactly as I made them if you don't
understand them, and then *test* them!  They were primarily designed to
fix a bug in the #ifndef INET6 code.  If you don't have a suitable
environment in which to test that way then you must apply all of my
changes verbatim, at least to the code sections which you cannot test,
and then trust that I have done the testing just as I explicitly claimed
I did.  Do not ask me to test your idea of my changes without having
tested them yourself to see if they indeed fix the problem I described
in the same way that my changes fix the problem.  I'll try to compile
the whole thing with -DINET6 and try testing it myself today, though I
don't currently have any IPv6 networks configured on my machines, though
they do have it in their kernels.  (of course it's just as important to
test the INET6 code with IPv4 configurations too....)

> 	i still don't understand this "more than 17 letters" part.
> 	your changes to hostname buffer length are totally cosmetic.

An array of sizeof("255.255.255.255"), even +1, is not anywhere near
long enough to hold your average fully qualified hostname.....  I
thought the comments I put in there to show what's being done at which
stage would make this clear.

BTW, I'm guessing that Wietse won't accept any INET6 patches that are
just #ifdefs.  I think the best way to fully fix this maze of
conditional compilation would be to first fix the code to call the
already present peer_name() from libglobal and then to provide an
alternate peer_name6.c that's been changed to use getnameinfo() and
getaddrinfo() exclusively.

Unfortunately getnameinfo() is a totally useless API for use in
scenarios where what's really wanted are the actual DNS records returned
(at least for the case where DNS is being used), and that's exactly what
is really needed in Postfix (though other fixes need to be done in that
manner too).  It's really too bad it wasn't designed to return a linked
list of struct nameinfo records in a manner similar to what
getaddrinfo() does.  This will have to be corrected in some way at some
time soon.

-- 
							Greg A. Woods

+1 416 218-0098      VE3TCP      <gwoods@acm.org>     <woods@robohack.ca>
Planix, Inc. <woods@planix.com>;   Secrets of the Weird <woods@weird.com>