LDAP_X_OPT_CONNECT_TIMEOUT is applicable only when a new connection
being established. in your case that happens when you execute bind
operation. now i dunno why your LDAP server is changing its IP addr
dynamically and how it does the cleanup but normally you should get
LDAP_SERVER_DOWN from ldap_search_s() if that happens clean. there
were several fixes made to "connection down" handling in libldap
since 5.08 version so you might wanna upgrade to the latest version
and see if LDAP_SERVER_DOWN gets returned straight away or not.
Binod Kumar wrote:
> 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
_______________________________________________
dev-tech-ldap mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-ldap