]> git.sur5r.net Git - openldap/commitdiff
libldap updates from HEAD
authorKurt Zeilenga <kurt@openldap.org>
Tue, 20 Dec 2005 16:57:23 +0000 (16:57 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Tue, 20 Dec 2005 16:57:23 +0000 (16:57 +0000)
libraries/libldap/ldap-int.h
libraries/libldap/request.c
libraries/libldap/result.c
libraries/libldap/search.c
libraries/libldap/unbind.c

index 533ef352963855594e91085cbd39a14268eec37a..d65dd23c62bf413ae3ece6a085bf8a0a640f59bd 100644 (file)
@@ -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;
index 84dc5a8e14deabf8aae727a3f8ce25613862730a..f4f735453c65039a6a777aeb45a603891a2b69e6 100644 (file)
@@ -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 );
        }
index e17210f93d4bb0be6da020a5442a66016b9320fa..91b118fc8c8df8e84a31a36cbe96708527ccb4b6 100644 (file)
@@ -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 */
 }
 
 
index 623c2fb31746c6f4c1c6809e6bde1ce10d40cbc4..75e90cf586c7f54efc19cee22e0c8d9860e62812 100644 (file)
@@ -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 );
index 86b9ab2baa13fd17ca855ca50fee525778d1ad21..fba3a5ffb35936c501c5c1dfc03a73b2caadaedf 100644 (file)
@@ -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 );