Diff for /libraries/libldap/result.c between versions 1.99.2.9 and 1.99.2.10

version 1.99.2.9, 2005/10/10 17:35:26 version 1.99.2.10, 2005/10/12 01:10:47
Line 1 Line 1
 /* result.c - wait for an ldap result */  /* result.c - wait for an ldap result */
 /* $OpenLDAP: pkg/ldap/libraries/libldap/result.c,v 1.115 2005/10/08 16:51:15 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/libraries/libldap/result.c,v 1.99.2.9 2005/10/10 17:35:26 kurt Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 1998-2005 The OpenLDAP Foundation.   * Copyright 1998-2005 The OpenLDAP Foundation.
Line 111  ldap_result( Line 111  ldap_result(
         assert( ld != NULL );          assert( ld != NULL );
         assert( result != NULL );          assert( result != NULL );
   
         Debug( LDAP_DEBUG_TRACE, "ldap_result msgid %d\n", msgid, 0, 0 );          Debug( LDAP_DEBUG_TRACE, "ldap_result ld %p msgid %d\n", ld, msgid, 0 );
   
 #ifdef LDAP_R_COMPILE  #ifdef LDAP_R_COMPILE
         ldap_pvt_thread_mutex_lock( &ld->ld_res_mutex );          ldap_pvt_thread_mutex_lock( &ld->ld_res_mutex );
Line 146  chkResponseList( Line 146  chkResponseList(
          */           */
   
         Debug( LDAP_DEBUG_TRACE,          Debug( LDAP_DEBUG_TRACE,
                 "ldap_chkResponseList for msgid=%d, all=%d\n",                  "ldap_chkResponseList ld %p msgid %d all %d\n",
             msgid, all, 0 );              ld, msgid, all );
         lastlm = &ld->ld_responses;          lastlm = &ld->ld_responses;
         for ( lm = ld->ld_responses; lm != NULL; lm = nextlm ) {          for ( lm = ld->ld_responses; lm != NULL; lm = nextlm ) {
                 nextlm = lm->lm_next;                  nextlm = lm->lm_next;
Line 207  chkResponseList( Line 207  chkResponseList(
 #ifdef LDAP_DEBUG  #ifdef LDAP_DEBUG
         if( lm == NULL) {          if( lm == NULL) {
                 Debug( LDAP_DEBUG_TRACE,                  Debug( LDAP_DEBUG_TRACE,
                         "ldap_chkResponseList returns NULL\n", 0, 0, 0);                          "ldap_chkResponseList returns ld %p NULL\n", ld, 0, 0);
         } else {          } else {
                 Debug( LDAP_DEBUG_TRACE,                  Debug( LDAP_DEBUG_TRACE,
                         "ldap_chkResponseList returns msgid %d, type 0x%02lu\n",                          "ldap_chkResponseList returns ld %p msgid %d, type 0x%02lu\n",
                         lm->lm_msgid, (unsigned long) lm->lm_msgtype, 0);                          ld, lm->lm_msgid, (unsigned long) lm->lm_msgtype);
         }          }
 #endif  #endif
     return lm;      return lm;
Line 238  wait4msg( Line 238  wait4msg(
   
 #ifdef LDAP_DEBUG  #ifdef LDAP_DEBUG
         if ( timeout == NULL ) {          if ( timeout == NULL ) {
                 Debug( LDAP_DEBUG_TRACE, "wait4msg (infinite timeout), msgid %d\n",                  Debug( LDAP_DEBUG_TRACE, "wait4msg ld %p msgid %d (infinite timeout)\n",
                     msgid, 0, 0 );                      ld, msgid, 0 );
         } else {          } else {
                 Debug( LDAP_DEBUG_TRACE, "wait4msg (timeout %ld sec, %ld usec), msgid %d\n",                  Debug( LDAP_DEBUG_TRACE, "wait4msg ld %p msgid %d (timeout %ld usec)\n",
                        (long) timeout->tv_sec, (long) timeout->tv_usec, msgid );                      ld, msgid, (long)timeout->tv_sec * 1000000 + timeout->tv_usec );
         }          }
 #endif /* LDAP_DEBUG */  #endif /* LDAP_DEBUG */
   
Line 259  wait4msg( Line 259  wait4msg(
         while ( rc == -2 ) {          while ( rc == -2 ) {
 #ifdef LDAP_DEBUG  #ifdef LDAP_DEBUG
                 if ( ldap_debug & LDAP_DEBUG_TRACE ) {                  if ( ldap_debug & LDAP_DEBUG_TRACE ) {
                         Debug( LDAP_DEBUG_TRACE, "wait4msg continue, msgid %d, all %d\n",                          Debug( LDAP_DEBUG_TRACE, "wait4msg continue ld %p msgid %d all %d\n",
                                 msgid, all, 0 );                                  ld, msgid, all );
                         ldap_dump_connection( ld, ld->ld_conns, 1 );                          ldap_dump_connection( ld, ld->ld_conns, 1 );
                         ldap_dump_requests_and_responses( ld );                          ldap_dump_requests_and_responses( ld );
                 }                  }
Line 272  wait4msg( Line 272  wait4msg(
                 } else {                  } else {
                         int lc_ready = 0;                          int lc_ready = 0;
   
   #ifdef LDAP_R_COMPILE
                           ldap_pvt_thread_mutex_lock( &ld->ld_conn_mutex );
   #endif
                         for ( lc = ld->ld_conns; lc != NULL; lc = nextlc ) {                          for ( lc = ld->ld_conns; lc != NULL; lc = nextlc ) {
                                 nextlc = lc->lconn_next;                                  nextlc = lc->lconn_next;
                                 if ( ber_sockbuf_ctrl( lc->lconn_sb,                                  if ( ber_sockbuf_ctrl( lc->lconn_sb,
                                                 LBER_SB_OPT_DATA_READY, NULL ) ) {                                                  LBER_SB_OPT_DATA_READY, NULL ) ) {
   #ifdef LDAP_R_COMPILE
                                           ldap_pvt_thread_mutex_unlock( &ld->ld_conn_mutex );
   #endif
                                         rc = try_read1msg( ld, msgid, all, lc->lconn_sb,                                          rc = try_read1msg( ld, msgid, all, lc->lconn_sb,
                                                 &lc, result );                                                  &lc, result );
   #ifdef LDAP_R_COMPILE
                                           ldap_pvt_thread_mutex_lock( &ld->ld_conn_mutex );
   #endif
                                         lc_ready = 1;                                          lc_ready = 1;
                                         break;                                          break;
                                 }                                  }
                         }                          }
   #ifdef LDAP_R_COMPILE
                           ldap_pvt_thread_mutex_unlock( &ld->ld_conn_mutex );
   #endif
   
                         if ( !lc_ready ) {                          if ( !lc_ready ) {
                                 rc = ldap_int_select( ld, tvp );                                  rc = ldap_int_select( ld, tvp );
Line 318  wait4msg( Line 330  wait4msg(
                                         }                                          }
 #ifdef LDAP_R_COMPILE  #ifdef LDAP_R_COMPILE
                                         ldap_pvt_thread_mutex_unlock( &ld->ld_req_mutex );                                          ldap_pvt_thread_mutex_unlock( &ld->ld_req_mutex );
                                           ldap_pvt_thread_mutex_lock( &ld->ld_conn_mutex );
 #endif  #endif
                                         for ( lc = ld->ld_conns; rc == -2 && lc != NULL;                                          for ( lc = ld->ld_conns; rc == -2 && lc != NULL;
                                                 lc = nextlc )                                                  lc = nextlc )
Line 326  wait4msg( Line 339  wait4msg(
                                                 if ( lc->lconn_status == LDAP_CONNST_CONNECTED &&                                                  if ( lc->lconn_status == LDAP_CONNST_CONNECTED &&
                                                         ldap_is_read_ready( ld, lc->lconn_sb ))                                                          ldap_is_read_ready( ld, lc->lconn_sb ))
                                                 {                                                  {
   #ifdef LDAP_R_COMPILE
                                                           ldap_pvt_thread_mutex_unlock( &ld->ld_conn_mutex );
   #endif
                                                         rc = try_read1msg( ld, msgid, all,                                                          rc = try_read1msg( ld, msgid, all,
                                                                 lc->lconn_sb, &lc, result );                                                                  lc->lconn_sb, &lc, result );
                                                                 if ( lc == NULL ) lc = nextlc;                                                                  if ( lc == NULL ) lc = nextlc;
   #ifdef LDAP_R_COMPILE
                                                           ldap_pvt_thread_mutex_lock( &ld->ld_conn_mutex );
   #endif
                                                 }                                                  }
                                         }                                          }
   #ifdef LDAP_R_COMPILE
                                           ldap_pvt_thread_mutex_unlock( &ld->ld_conn_mutex );
   #endif
                                 }                                  }
                         }                          }
                 }                  }
Line 345  wait4msg( Line 367  wait4msg(
                         }                          }
                         tv.tv_sec = tv0.tv_sec;                          tv.tv_sec = tv0.tv_sec;
   
                         Debug( LDAP_DEBUG_TRACE, "wait4msg:  %ld secs to go\n",                          Debug( LDAP_DEBUG_TRACE, "wait4msg ld %p %ld secs to go\n",
                                (long) tv.tv_sec, 0, 0 );                                 ld, (long) tv.tv_sec, 0 );
                         start_time = tmp_time;                          start_time = tmp_time;
                 }                  }
         }          }
Line 395  try_read1msg( Line 417  try_read1msg(
         assert( lcp != NULL );          assert( lcp != NULL );
         assert( *lcp != NULL );          assert( *lcp != NULL );
                   
         Debug( LDAP_DEBUG_TRACE, "read1msg: msgid %d, all %d\n", msgid, all, 0 );          Debug( LDAP_DEBUG_TRACE, "read1msg: ld %p msgid %d all %d\n", ld, msgid, all );
   
         lc = *lcp;          lc = *lcp;
   
Line 457  nextresp3: Line 479  nextresp3:
   
         /* if it's been abandoned, toss it */          /* if it's been abandoned, toss it */
         if ( ldap_abandoned( ld, id ) ) {          if ( ldap_abandoned( ld, id ) ) {
                 Debug( LDAP_DEBUG_ANY, "abandoned\n", 0, 0, 0);                  Debug( LDAP_DEBUG_ANY, "abandoned ld %p msgid %ld\n",
                            ld, (long) id, 0);
 retry_ber:  retry_ber:
                 ber_free( ber, 1 );                  ber_free( ber, 1 );
                 if ( ber_sockbuf_ctrl( sb, LBER_SB_OPT_DATA_READY, NULL ) ) {                  if ( ber_sockbuf_ctrl( sb, LBER_SB_OPT_DATA_READY, NULL ) ) {
Line 469  retry_ber: Line 492  retry_ber:
         lr = ldap_find_request_by_msgid( ld, id );          lr = ldap_find_request_by_msgid( ld, id );
         if ( lr == NULL ) {          if ( lr == NULL ) {
                 Debug( LDAP_DEBUG_ANY,                  Debug( LDAP_DEBUG_ANY,
                     "no request for response with msgid %ld (tossing)\n",                      "no request for response on ld %p msgid %ld (tossing)\n",
                     (long) id, 0, 0 );                      ld, (long) id, 0 );
                 goto retry_ber;                  goto retry_ber;
         }          }
 #ifdef LDAP_CONNECTIONLESS  #ifdef LDAP_CONNECTIONLESS
Line 487  nextresp2: Line 510  nextresp2:
         }          }
   
         Debug( LDAP_DEBUG_TRACE,          Debug( LDAP_DEBUG_TRACE,
                 "ldap_read: message type %s msgid %ld, original id %ld\n",                  "read1msg: ld %p msgid %ld message type %s\n",
                 ldap_int_msgtype2str( tag ),                  ld, (long) lr->lr_msgid, ldap_int_msgtype2str( tag ));
                 (long) lr->lr_msgid, (long) lr->lr_origid );  
   
         id = lr->lr_origid;          id = lr->lr_origid;
         refer_cnt = 0;          refer_cnt = 0;
Line 572  nextresp2: Line 594  nextresp2:
                                                         rc = LDAP_DECODING_ERROR;                                                          rc = LDAP_DECODING_ERROR;
                                                         lr->lr_status = LDAP_REQST_COMPLETED;                                                          lr->lr_status = LDAP_REQST_COMPLETED;
                                                         Debug( LDAP_DEBUG_TRACE,                                                          Debug( LDAP_DEBUG_TRACE,
                                                             "read1msg: referral decode error, mark request completed, id = %d\n",                                                              "read1msg: referral decode error, mark request completed, ld %p msgid %d\n",
                                                                     lr->lr_msgid, 0, 0);                                                                      ld, lr->lr_msgid, 0);
                                                 } else {                                                  } else {
                                                         /* Chase the referral                                                           /* Chase the referral 
                                                          * Note: refs arrary is freed by ldap_chase_v3referrals                                                           * Note: refs arrary is freed by ldap_chase_v3referrals
Line 582  nextresp2: Line 604  nextresp2:
                                                             0, &lr->lr_res_error, &hadref );                                                              0, &lr->lr_res_error, &hadref );
                                                         lr->lr_status = LDAP_REQST_COMPLETED;                                                          lr->lr_status = LDAP_REQST_COMPLETED;
                                                         Debug( LDAP_DEBUG_TRACE,                                                          Debug( LDAP_DEBUG_TRACE,
                                                             "read1msg:  referral chased, mark request completed, id = %d\n",                                                              "read1msg: referral chased, mark request completed, ld %p msgid %d\n",
                                                             lr->lr_msgid, 0, 0);                                                              ld, lr->lr_msgid, 0);
                                                         if( refer_cnt > 0) {                                                          if( refer_cnt > 0) {
                                                                 /* Referral successfully chased */                                                                  /* Referral successfully chased */
                                                                 v3ref = V3REF_SUCCESS;                                                                  v3ref = V3REF_SUCCESS;
Line 683  Debug( LDAP_DEBUG_TRACE, Line 705  Debug( LDAP_DEBUG_TRACE,
                 }                  }
   
                 Debug( LDAP_DEBUG_TRACE,                  Debug( LDAP_DEBUG_TRACE,
                     "read1msg:  %d new referrals\n", refer_cnt, 0, 0 );                      "read1msg: ld %p %d new referrals\n", ld, refer_cnt, 0 );
   
                 if ( refer_cnt != 0 ) { /* chasing referrals */                  if ( refer_cnt != 0 ) { /* chasing referrals */
                         ber_free( ber, 1 );                          ber_free( ber, 1 );
Line 704  Debug( LDAP_DEBUG_TRACE, Line 726  Debug( LDAP_DEBUG_TRACE,
   
                         lr->lr_status = LDAP_REQST_COMPLETED; /* declare this request done */                          lr->lr_status = LDAP_REQST_COMPLETED; /* declare this request done */
                         Debug( LDAP_DEBUG_TRACE,                          Debug( LDAP_DEBUG_TRACE,
                             "read1msg:  mark request completed, id = %d\n", lr->lr_msgid, 0, 0);                              "read1msg:  mark request completed, ld %p msgid %d\n", ld, lr->lr_msgid, 0);
                         while ( lr->lr_parent != NULL ) {                          while ( lr->lr_parent != NULL ) {
                                 merge_error_info( ld, lr->lr_parent, lr );                                  merge_error_info( ld, lr->lr_parent, lr );
   
Line 731  Debug( LDAP_DEBUG_TRACE, Line 753  Debug( LDAP_DEBUG_TRACE,
                         {                          {
                                 id = lr->lr_msgid;                                  id = lr->lr_msgid;
                                 tag = lr->lr_res_msgtype;                                  tag = lr->lr_res_msgtype;
                                 Debug( LDAP_DEBUG_ANY, "request %ld done\n",                                  Debug( LDAP_DEBUG_ANY, "request done: ld %p msgid %ld\n",
                                     (long) id, 0, 0 );                                      ld, (long) id, 0 );
 Debug( LDAP_DEBUG_TRACE,  Debug( LDAP_DEBUG_TRACE,
 "res_errno: %d, res_error: <%s>, res_matched: <%s>\n",  "res_errno: %d, res_error: <%s>, res_matched: <%s>\n",
 lr->lr_res_errno, lr->lr_res_error ? lr->lr_res_error : "",  lr->lr_res_errno, lr->lr_res_error ? lr->lr_res_error : "",
Line 903  lr->lr_res_matched ? lr->lr_res_matched Line 925  lr->lr_res_matched ? lr->lr_res_matched
                 goto exit;                  goto exit;
         }          }
   
         Debug( LDAP_DEBUG_TRACE, "adding response id %ld type %ld:\n",          Debug( LDAP_DEBUG_TRACE, "adding response ld %p msgid %ld type %ld:\n",
             (long) newmsg->lm_msgid, (long) newmsg->lm_msgtype, 0 );              ld, (long) newmsg->lm_msgid, (long) newmsg->lm_msgtype );
   
         /* part of a search response - add to end of list of entries */          /* part of a search response - add to end of list of entries */
         l->lm_chain_tail->lm_chain = newmsg;          l->lm_chain_tail->lm_chain = newmsg;

Removed from v.1.99.2.9  
changed lines
  Added in v.1.99.2.10


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org