From: Howard Chu Date: Fri, 12 May 2006 06:16:32 +0000 (+0000) Subject: ITS#4541 refine commit for #4524 X-Git-Tag: OPENLDAP_REL_ENG_2_4_1ALPHA~2^2~37 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=da0ec66ceb94376ba9b0d9b9a8be57e28be8c07e;p=openldap ITS#4541 refine commit for #4524 --- diff --git a/libraries/libldap/open.c b/libraries/libldap/open.c index e01c5ea28e..d02048dfd6 100644 --- a/libraries/libldap/open.c +++ b/libraries/libldap/open.c @@ -37,22 +37,26 @@ int ldap_open_defconn( LDAP *ld ) { + int rc = 0; + #ifdef LDAP_R_COMPILE ldap_pvt_thread_mutex_lock( &ld->ld_req_mutex ); #endif /* LDAP_R_COMPILE */ - ld->ld_defconn = ldap_new_connection( ld, - &ld->ld_options.ldo_defludp, 1, 1, NULL ); + if ( ld->ld_defconn == NULL ) { + ld->ld_defconn = ldap_new_connection( ld, + &ld->ld_options.ldo_defludp, 1, 1, NULL ); + + if( ld->ld_defconn == NULL ) { + ld->ld_errno = LDAP_SERVER_DOWN; + rc = -1; + } else { + ++ld->ld_defconn->lconn_refcnt; /* so it never gets closed/freed */ + } + } #ifdef LDAP_R_COMPILE ldap_pvt_thread_mutex_unlock( &ld->ld_req_mutex ); #endif /* LDAP_R_COMPILE */ - - if( ld->ld_defconn == NULL ) { - ld->ld_errno = LDAP_SERVER_DOWN; - return -1; - } - - ++ld->ld_defconn->lconn_refcnt; /* so it never gets closed/freed */ - return 0; + return rc; } /*