From: Kurt Zeilenga Date: Tue, 20 Dec 2005 16:57:23 +0000 (+0000) Subject: libldap updates from HEAD X-Git-Tag: OPENLDAP_REL_ENG_2_3_14~54 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=b52bf020e03ffe7120c80585e991418befc0d9ee;p=openldap libldap updates from HEAD --- diff --git a/libraries/libldap/ldap-int.h b/libraries/libldap/ldap-int.h index 533ef35296..d65dd23c62 100644 --- a/libraries/libldap/ldap-int.h +++ b/libraries/libldap/ldap-int.h @@ -151,6 +151,7 @@ struct ldapoptions { #define LDAP_UNINITIALIZED 0x0 #define LDAP_INITIALIZED 0x1 #define LDAP_VALID_SESSION 0x2 +#define LDAP_TRASHED_SESSION 0xFF int ldo_debug; #ifdef LDAP_CONNECTIONLESS #define LDAP_IS_UDP(ld) ((ld)->ld_options.ldo_is_udp) @@ -347,7 +348,9 @@ struct ldap { LDAPConn *ld_conns; /* list of server connections */ void *ld_selectinfo; /* platform specifics for select */ }; -#define LDAP_VALID(ld) ( (ld)->ld_valid == LDAP_VALID_SESSION ) +#define LDAP_VALID(ld) ( (ld)->ld_valid == LDAP_VALID_SESSION ) +#define LDAP_TRASHED(ld) ( (ld)->ld_valid == LDAP_TRASHED_SESSION ) +#define LDAP_TRASH(ld) ( (ld)->ld_valid = LDAP_TRASHED_SESSION ) #ifdef LDAP_R_COMPILE LDAP_V ( ldap_pvt_thread_mutex_t ) ldap_int_resolv_mutex; diff --git a/libraries/libldap/request.c b/libraries/libldap/request.c index 84dc5a8e14..f4f735453c 100644 --- a/libraries/libldap/request.c +++ b/libraries/libldap/request.c @@ -662,7 +662,8 @@ ldap_dump_requests_and_responses( LDAP *ld ) ( lr->lr_status == LDAP_REQST_CHASINGREFS ) ? "ChasingRefs" : ( lr->lr_status == LDAP_REQST_NOTCONNECTED ) ? "NotConnected" : ( lr->lr_status == LDAP_REQST_WRITING) ? "Writing" : - ( lr->lr_status == LDAP_REQST_COMPLETED ? "Request Completed" : "Invalid Status")); + ( lr->lr_status == LDAP_REQST_COMPLETED ? "RequestCompleted" + : "InvalidStatus")); fprintf( stderr, " outstanding referrals %d, parent count %d\n", lr->lr_outrefcnt, lr->lr_parentcnt ); } diff --git a/libraries/libldap/result.c b/libraries/libldap/result.c index e17210f93d..91b118fc8c 100644 --- a/libraries/libldap/result.c +++ b/libraries/libldap/result.c @@ -78,6 +78,8 @@ static ber_tag_t build_result_ber LDAP_P(( LDAP *ld, BerElement **bp, LDAPReques static void merge_error_info LDAP_P(( LDAP *ld, LDAPRequest *parentr, LDAPRequest *lr )); static LDAPMessage * chkResponseList LDAP_P(( LDAP *ld, int msgid, int all)); +#define LDAP_MSG_X_KEEP_LOOKING (-2) + /* * ldap_result - wait for an ldap result response to a message from the @@ -255,8 +257,8 @@ wait4msg( start_time = time( NULL ); } - rc = -2; - while ( rc == -2 ) { + rc = LDAP_MSG_X_KEEP_LOOKING; + while ( rc == LDAP_MSG_X_KEEP_LOOKING ) { #ifdef LDAP_DEBUG if ( ldap_debug & LDAP_DEBUG_TRACE ) { Debug( LDAP_DEBUG_TRACE, "wait4msg continue ld %p msgid %d all %d\n", @@ -315,9 +317,9 @@ wait4msg( } if ( rc == -1 ) { - rc = -2; /* select interrupted: loop */ + rc = LDAP_MSG_X_KEEP_LOOKING; /* select interrupted: loop */ } else { - rc = -2; + rc = LDAP_MSG_X_KEEP_LOOKING; #ifdef LDAP_R_COMPILE ldap_pvt_thread_mutex_lock( &ld->ld_req_mutex ); #endif @@ -332,7 +334,7 @@ wait4msg( ldap_pvt_thread_mutex_unlock( &ld->ld_req_mutex ); ldap_pvt_thread_mutex_lock( &ld->ld_conn_mutex ); #endif - for ( lc = ld->ld_conns; rc == -2 && lc != NULL; + for ( lc = ld->ld_conns; rc == LDAP_MSG_X_KEEP_LOOKING && lc != NULL; lc = nextlc ) { nextlc = lc->lconn_next; @@ -357,7 +359,7 @@ wait4msg( } } - if ( rc == -2 && tvp != NULL ) { + if ( rc == LDAP_MSG_X_KEEP_LOOKING && tvp != NULL ) { tmp_time = time( NULL ); tv0.tv_sec -= ( tmp_time - start_time ); if ( tv0.tv_sec <= 0 ) { @@ -459,10 +461,10 @@ nextresp3: "ber_get_next failed.\n", 0, 0, 0 ); #endif #ifdef EWOULDBLOCK - if (errno==EWOULDBLOCK) return -2; + if (errno==EWOULDBLOCK) return LDAP_MSG_X_KEEP_LOOKING; #endif #ifdef EAGAIN - if (errno == EAGAIN) return -2; + if (errno == EAGAIN) return LDAP_MSG_X_KEEP_LOOKING; #endif ld->ld_errno = LDAP_SERVER_DOWN; return -1; @@ -487,7 +489,7 @@ retry_ber: if ( ber_sockbuf_ctrl( sb, LBER_SB_OPT_DATA_READY, NULL ) ) { goto retry; } - return( -2 ); /* continue looking */ + return( LDAP_MSG_X_KEEP_LOOKING ); /* continue looking */ } lr = ldap_find_request_by_msgid( ld, id ); @@ -517,7 +519,7 @@ nextresp2: id = lr->lr_origid; refer_cnt = 0; hadref = simple_request = 0; - rc = -2; /* default is to keep looking (no response found) */ + rc = LDAP_MSG_X_KEEP_LOOKING; /* default is to keep looking (no response found) */ lr->lr_res_msgtype = tag; /* @@ -989,7 +991,7 @@ exit: if ( ber_sockbuf_ctrl( sb, LBER_SB_OPT_DATA_READY, NULL ) ) { goto retry; } - return( -2 ); /* continue looking */ + return( LDAP_MSG_X_KEEP_LOOKING ); /* continue looking */ } diff --git a/libraries/libldap/search.c b/libraries/libldap/search.c index 623c2fb317..75e90cf586 100644 --- a/libraries/libldap/search.c +++ b/libraries/libldap/search.c @@ -298,6 +298,23 @@ ldap_build_search_req( return( NULL ); } +#ifdef LDAP_DEBUG + if ( ldap_debug & LDAP_DEBUG_ARGS ) { + if ( attrs == NULL ) { + Debug( LDAP_DEBUG_ARGS, "ldap_build_search_req ATTRS: *\n", 0, 0, 0 ); + + } else { + int i; + + Debug( LDAP_DEBUG_ARGS, "ldap_build_search_req ATTRS:\n", 0, 0, 0 ); + + for ( i = 0; attrs[ i ]; i++ ) { + Debug( LDAP_DEBUG_ARGS, " %s\n", attrs[ i ], 0, 0 ); + } + } + } +#endif /* LDAP_DEBUG */ + if ( ber_printf( ber, /*{*/ "{v}N}", attrs ) == -1 ) { ld->ld_errno = LDAP_ENCODING_ERROR; ber_free( ber, 1 ); diff --git a/libraries/libldap/unbind.c b/libraries/libldap/unbind.c index 86b9ab2baa..fba3a5ffb3 100644 --- a/libraries/libldap/unbind.c +++ b/libraries/libldap/unbind.c @@ -194,6 +194,9 @@ ldap_ld_free( #ifdef LDAP_R_COMPILE ldap_pvt_thread_mutex_destroy( &ld->ld_req_mutex ); ldap_pvt_thread_mutex_destroy( &ld->ld_res_mutex ); +#endif +#ifndef NDEBUG + LDAP_TRASH(ld); #endif LDAP_FREE( (char *) ld );