Hello,
"LDAP_X_OPT_CONNECT_TIMEOUT" documentation says that it allows to
control the TCP/IP timeout. But in my sample program this option is not
working as expected. I have set the TCP/IP timeout value as 60000
millisecond. If IP address of LDAP server gets changed after the successfull
bind operation, ldap_search_s() API is returning after 15 minutes of TCP/IP
timeout period on linux platforms even if i have set the
LDAP_X_OPT_CONNECT_TIMEOUT value with 60000 millisecond..
Following is the code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <ldap.h>
int main( int argc, char **argv )
{
LDAP *ld;
LDAPMessage *result, *e;
BerElement *ber;
char *a, *dn;
char **vals;
int rc,i;
/* get a handle to an LDAP connection */
if ( (ld = ldap_init( "10.88.176.137", 389 )) == NULL )
{
perror( "ldap_init" );
return( 1 );
}
int timeout = 60000;
if ( ldap_set_option( ld, LDAP_X_OPT_CONNECT_TIMEOUT, &timeout ) !=
LDAP_SUCCESS )
{
rc = ldap_get_lderrno( ld, NULL, NULL);
fprintf( stderr, "ldap_set_option: %s\n", ldap_err2string(
rc ) );
ldap_unbind( ld );
return (rc);
}
/* authenticate to the directory as nobody */
if ( ldap_simple_bind_s( ld,"cn=directory manager", "password" ) !=
LDAP_SUCCESS )
{
ldap_perror( ld, "ldap_simple_bind_s" );
return( 1 );
}
while(1)
{
/* search for all entries with surname of Jensen */
if ( ldap_search_s( ld, "o=airius.com", 0,"objectclass=*", NULL,
0, &result ) != LDAP_SUCCESS )
{
ldap_perror( ld, "ldap_search_s" );
return( 1 );
}
/* for each entry print out name + all attrs and values */
for ( e = ldap_first_entry( ld, result ); e != NULL;e =
ldap_next_entry( ld, e ) )
{
if ( (dn = ldap_get_dn( ld, e )) != NULL )
{
printf( "dn: %s\n", dn );
ldap_memfree( dn );
}
for ( a = ldap_first_attribute( ld, e, &ber );a != NULL; a =
ldap_next_attribute( ld, e, ber ) )
{
if ((vals = ldap_get_values( ld, e, a)) != NULL )
{
for ( i = 0; vals[i] != NULL; i++ )
{
printf( "%s: %s\n", a, vals[i] );
}
ldap_value_free( vals );
}
ldap_memfree( a );
}
if ( ber != NULL )
{
ldap_ber_free( ber, 0 );
}
printf( "\n" );
}//end of outer for loop
}//end of while loop
ldap_msgfree( result );
ldap_unbind( ld );
return( 0 );
}
I have used LDAP SDK version 5.08. I am using Linux operating system.
Please let me know if something is wrong with this program or there is some
issue with LDAP_X_OPT_CONNECT_TIMEOUT option.
Looking forward for help and suggestion in this regard.
Thanks & Regards
Binod Kumar
_______________________________________________
dev-tech-ldap mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-ldap