apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William A. Rowe, Jr." <wr...@covalent.net>
Subject Re: os-unixware/7651: compilation of srclib/apr/network_io/unix/sa_common.c fails
Date Mon, 30 Apr 2001 16:08:24 GMT
From: "Jeff Trawick" <trawickj@bellsouth.net>
Sent: Monday, April 30, 2001 9:46 AM

> Help me out here... I don't follow your comments.
> "William A. Rowe, Jr." <wrowe@covalent.net> writes:
> > Jeff,
> > 
> >   this is the wrong solution (and it was anticipated).  Since win32 and OS2 don't
> > need the unix MPM's they were never fixed, apparently (from this
> > report) they must be.
> what is the connection between "unix MPM" and this code?  Do you mean
> "unix build of APR?"

We implemented a wrapper apr_get_netos_error() around the win32 and os2 pseudo-h_errno info.
Didn't need to update unix MPMs to use it (nor the unix-specific APR code) since neither
platform actually the unix MPMs.  In hindsite we should have.

> >   We can't go munging system symbols, see the declarations in apr_errno.h for the
> > apr_get_netos_error() (and if we need it, we could implement an apr_set_netos_error()

> > although it may not enjoy cross-platform support!)
> What does "munging system symbols" mean?

It seemed you were about to redeclare some stuff.  My bad, I misunderstood your patch.
> apr_get/set_netos_error() is not sufficient.  For Unix that needs to deal
> with errno.  This is h_errno.

Either way, we don't want platform crisscrossed #if blocks when you can add an 
apr_get_netos_error() macro implementation with that same condition.  netos corresponds
to h_errno, not errno :-)

> >   Patch the apr core and mpms to adopt this call instead of h_errno and implement
> > solution in terms of declaring apr_get_netos_error() and the problem
> > should go away.
> can't do because of the errno/h_errno issue...

If a platform uses errno to return the h_errno class of errors, then apr_get_netos_error 
would simply return errno.  Most platforms appear to have a different sockets error store.

> Note that this path is only used on systems with getnameinfo() and IPv6
> support.  The h_errno kludge helps out with some getnameinfo() issues
> on common versions of glibc.  Before we truly clean up this code we
> need to understand what is needed to operate with getnameinfo() across
> a variety of systems.  Hopefully the h_errno stuff can then be hidden
> inside ifdef GETNAMEINFO_SETS_H_ERRNO and any non-Unix platforms which
> later add getnameinfo() support won't be hurt by the kludge since it
> won't be set.

I'm suggesting the 'kluge' goes away and this can be done consistently across platforms.

View raw message