on a semi-related note (read: I've lost the original thread), 
we've tracked down the full source of the sizeof(sockaddr_in6) !=
 ai_addrlen bug on Tru64 , turns out it's a compiler alignment 
problem affecting some versions of Tru64 cc, and a lot of versions of 
gcc. 

They were mis-aligning the in6_addr union, but only at certain
offsets within other aligned structures (in this case sockaddr_in6).

It may still be worth adding the autoconf check for sizeof == ai_addrlen
to warn people about broken compilers, but the need for voodoo
overlaying has gone away.

On Wed, Sep 17, 2003 at 10:23:48AM -0400, Jeff Trawick wrote:
> >  Modified:    include  apr_network_io.h
> >  Log:
> >  Move the 'sa' field to the end of the structure, to ensure
> >  binary compatibility between a libapr built with IPv6 support
> >  and one built without.
> 
> good move!
> 
> one of my evil twins considered allocating the socket address separately
> 
> the other one wondered about putting some reserved space in front of the 
> sa union in case we need more fields later, but that may be problematic 
> since apps can build the structure themself
> 
> on another topic...  what about binary compatibility regardless of large 
> file support :)
> 
> 
> 

-- 
Colm MacC�rthaigh                        Public Key: [EMAIL PROTECTED]
[EMAIL PROTECTED]                                         http://www.stdlib.net/

Reply via email to