Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
openldap2.2376
openldap-2.3.37-Fix-ldap-host-lookup-ipv6.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File openldap-2.3.37-Fix-ldap-host-lookup-ipv6.patch of Package openldap2.2376
The patch was written by Christian Kornacker on 2014-01-08 to fix an issue with unresponsive LDAP host lookups in IPv6 environment. --- libraries/libldap/util-int.c | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) Index: openldap-2.3.37/libraries/libldap/util-int.c =================================================================== --- openldap-2.3.37.orig/libraries/libldap/util-int.c +++ openldap-2.3.37/libraries/libldap/util-int.c @@ -527,10 +527,16 @@ static char *safe_realloc( char **buf, i char * ldap_pvt_get_fqdn( char *name ) { - char *fqdn, *ha_buf; + int rc; + char *fqdn; char hostbuf[MAXHOSTNAMELEN+1]; +#ifdef HAVE_GETADDRINFO + struct addrinfo hints, *res; +#else + char *ha_buf; struct hostent *hp, he_buf; - int rc, local_h_errno; + int local_h_errno; +#endif if( name == NULL ) { if( gethostname( hostbuf, MAXHOSTNAMELEN ) == 0 ) { @@ -541,6 +547,37 @@ char * ldap_pvt_get_fqdn( char *name ) } } +#ifdef HAVE_GETADDRINFO + memset( &hints, '\0', sizeof( hints ) ); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags |= AI_CANONNAME; + + /* most getaddrinfo(3) use non-threadsafe resolver libraries */ +#if defined( LDAP_R_COMPILE ) + ldap_pvt_thread_mutex_lock(&ldap_int_resolv_mutex); +#endif + + rc = getaddrinfo( name, NULL, &hints, &res ); + +#if defined( LDAP_R_COMPILE ) + ldap_pvt_thread_mutex_unlock(&ldap_int_resolv_mutex); +#endif + + if ( rc != 0 ) { + fqdn = LDAP_STRDUP( name ); + } else { + while ( res ) { + if ( res->ai_canonname ) { + fqdn = LDAP_STRDUP ( res->ai_canonname ); + break; + } + res = res->ai_next; + } + freeaddrinfo( res ); + } +#else + rc = ldap_pvt_gethostbyname_a( name, &he_buf, &ha_buf, &hp, &local_h_errno ); @@ -551,6 +588,8 @@ char * ldap_pvt_get_fqdn( char *name ) } LDAP_FREE( ha_buf ); +#endif + return fqdn; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor