[Date Prev][Date Next] [Chronological] [Thread] [Top]

Further details on an issue in the tracking system...




I'm somehow missing the registration page for the ITS, or I'd be adding a
comment to ITS item

Build/2643

instead of posting.  But I'm also encountering the problem referred to
therein, on my 2.1.25 builds on AIX 5.2;  To summarize:


AC_GAI_STRERROR is defined iff HAVE_GETADDRINFO is also defined.  However, in
the code (in at least /libraries/libldap/util-int.c) uses of AC_GAI_STRERROR
appear in places which are not wrapped by ifdef HAVE_GETADDRINFO.


Since the ITS issue is still open, I am presuming this has not yet been dealt
with in 2.1.26.

Since openLDAP supplies a local version of GAI_STRERROR, it seems to be safe
to simply remove the wrapping HAVE_GETADDRINFO from the symbol #definition in
socket.h and from the function definition in util-int.c (patch 1 below) 




If dinking with this define sets off anyone's warning radar, the other
alternative is chewing on all the AC_GAI_STRERROR uses:  

./libraries/libldap/os-ip.c:                    AC_GAI_STRERROR(err), 0, 0);
./libraries/libldap/util-int.c: if ( rc ) *err = AC_GAI_STRERROR( rc );
./servers/slapd/daemon.c:                                  AC_GAI_STRERROR(err), 0, 0 );
./servers/slapd/daemon.c:                               AC_GAI_STRERROR(err), 0, 0);

os-ip.c's and daemon.c's uses are all inside a ifdef of HAVE_GETADDRINFO.  Pass.

util-int.c uses AC_GAI_STRERROR inside a block which is dependent on the
definition of HAVE_GETNAMEINFO.  So, we could instead invoke the definition of
AC_GAI_STRERROR and ldap_pvt_gai_strerror based on HAVE_GETNAMEINFO -or-
HAVE_GETADDRINFO.   (patch 2 below)


Opinions?  Obvious foot-shoots?


If there's something I'm missing about registering to update the ITS, I'd also
appreciate a smack about that.


- Allen S. Rout




Begin patch 1:-- 
--- ./libraries/libldap/util-int.c.orig 2004-01-23 14:26:39.000000000 -0500
+++ ./libraries/libldap/util-int.c      2004-01-23 14:26:46.000000000 -0500
@@ -540,7 +540,7 @@
        return fqdn;
 }
 
-#if defined( HAVE_GETADDRINFO ) && !defined( HAVE_GAI_STRERROR )
+#if !defined( HAVE_GAI_STRERROR )
 char *ldap_pvt_gai_strerror (int code) {
        static struct {
                int code;
--- include/ac/socket.h.orig    2004-01-23 12:52:05.000000000 -0500
+++ include/ac/socket.h 2004-01-23 12:53:10.000000000 -0500
@@ -192,13 +192,11 @@
 #      define INET6_ADDRSTRLEN 46
 #endif
 
-#ifdef HAVE_GETADDRINFO
-#      ifdef HAVE_GAI_STRERROR
-#              define AC_GAI_STRERROR(x)       (gai_strerror((x)))
-#      else
-#              define AC_GAI_STRERROR(x)       (ldap_pvt_gai_strerror((x)))
-               LDAP_F (char *) ldap_pvt_gai_strerror( int );
-#      endif
+#ifdef HAVE_GAI_STRERROR
+#      define AC_GAI_STRERROR(x)       (gai_strerror((x)))
+#else
+#      define AC_GAI_STRERROR(x)       (ldap_pvt_gai_strerror((x)))
+       LDAP_F (char *) ldap_pvt_gai_strerror( int );
 #endif
 
 #ifndef HAVE_GETPEEREID
End patch 1:-- 


Begin patch 2:-- 
--- ./include/ac/socket.h.orig  2004-01-23 15:30:54.000000000 -0500
+++ ./include/ac/socket.h       2004-01-23 15:31:03.000000000 -0500
@@ -192,7 +192,7 @@
 #      define INET6_ADDRSTRLEN 46
 #endif
 
-#ifdef HAVE_GETADDRINFO
+#if (defined(HAVE_GETADDRINFO) || defined(HAVE_GETNAMEINFO))
 #      ifdef HAVE_GAI_STRERROR
 #              define AC_GAI_STRERROR(x)       (gai_strerror((x)))
 #      else
--- ./libraries/libldap/util-int.c.orig 2004-01-23 15:28:28.000000000 -0500
+++ ./libraries/libldap/util-int.c      2004-01-23 15:29:22.000000000 -0500
@@ -540,7 +540,7 @@
        return fqdn;
 }
 
-#if defined( HAVE_GETADDRINFO ) && !defined( HAVE_GAI_STRERROR )
+#if (defined( HAVE_GETADDRINFO ) || defined(GAVE_GETNAMEINFO)) && !defined( HAVE_GAI_STRERROR )
 char *ldap_pvt_gai_strerror (int code) {
        static struct {
                int code;
End patch 2:--