Diff for /libraries/libldap/result.c between versions 1.50 and 1.51

version 1.50, 2000/10/03 16:51:30 version 1.51, 2000/10/04 23:40:36
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/libraries/libldap/result.c,v 1.49 2000/08/18 02:25:07 kurt Exp $ */  /* $OpenLDAP: pkg/ldap/libraries/libldap/result.c,v 1.50 2000/10/03 16:51:30 kurt Exp $ */
 /*  /*
  * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.   * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file   * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
Line 63  static ber_tag_t try_read1msg LDAP_P(( L Line 63  static ber_tag_t try_read1msg LDAP_P(( L
         int all, Sockbuf *sb, LDAPConn *lc, LDAPMessage **result ));          int all, Sockbuf *sb, LDAPConn *lc, LDAPMessage **result ));
 static ber_tag_t build_result_ber LDAP_P(( LDAP *ld, BerElement **bp, LDAPRequest *lr ));  static ber_tag_t build_result_ber LDAP_P(( LDAP *ld, BerElement **bp, LDAPRequest *lr ));
 static void merge_error_info LDAP_P(( LDAP *ld, LDAPRequest *parentr, LDAPRequest *lr ));  static void merge_error_info LDAP_P(( LDAP *ld, LDAPRequest *parentr, LDAPRequest *lr ));
   static LDAPMessage * chkResponseList LDAP_P(( LDAP *ld, int msgid, int all));
   
   
 /*  /*
Line 89  ldap_result( Line 90  ldap_result(
         struct timeval *timeout,          struct timeval *timeout,
         LDAPMessage **result )          LDAPMessage **result )
 {  {
         LDAPMessage     *lm, *lastlm, *nextlm;          LDAPMessage     *lm;
   
         assert( ld != NULL );          assert( ld != NULL );
         assert( result != NULL );          assert( result != NULL );
   
         Debug( LDAP_DEBUG_TRACE, "ldap_result\n", 0, 0, 0 );          Debug( LDAP_DEBUG_TRACE, "ldap_result msgid %d\n", msgid, 0, 0 );
   
         if( ld == NULL ) {          if( ld == NULL ) {
                 return -1;                  return -1;
Line 105  ldap_result( Line 106  ldap_result(
                 return -1;                  return -1;
         }          }
   
         /*      lm = chkResponseList(ld, msgid, all);
          * First, look through the list of responses we have received on  
           if ( lm == NULL ) {
                   return( wait4msg( ld, msgid, all, timeout, result ) );
           }
   
           *result = lm;
           ld->ld_errno = LDAP_SUCCESS;
           return( lm->lm_msgtype );
   }
   
   static LDAPMessage *
   chkResponseList( LDAP *ld,
                        int msgid,
                        int all)
   {
           LDAPMessage     *lm, *lastlm, *nextlm;
       /*
            * Look through the list of responses we have received on
          * this association and see if the response we're interested in           * this association and see if the response we're interested in
          * is there.  If it is, return it.  If not, call wait4msg() to           * is there.  If it is, return it.  If not, call wait4msg() to
          * wait until it arrives or timeout occurs.           * wait until it arrives or timeout occurs.
          */           */
   
         *result = NULL;  
         lastlm = NULL;          lastlm = NULL;
         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 154  ldap_result( Line 171  ldap_result(
                 }                  }
                 lastlm = lm;                  lastlm = lm;
         }          }
         if ( lm == NULL ) {      if ( lm != NULL ) {
                 return( wait4msg( ld, msgid, all, timeout, result ) );              if ( lastlm == NULL ) {
         }                      ld->ld_responses = (all == LDAP_MSG_ONE && lm->lm_chain != NULL
                           ? lm->lm_chain : lm->lm_next);
         if ( lastlm == NULL ) {              } else {
                 ld->ld_responses = (all == LDAP_MSG_ONE && lm->lm_chain != NULL                      lastlm->lm_next = (all == LDAP_MSG_ONE && lm->lm_chain != NULL
                     ? lm->lm_chain : lm->lm_next);                          ? lm->lm_chain : lm->lm_next);
         } else {              }
                 lastlm->lm_next = (all == LDAP_MSG_ONE && lm->lm_chain != NULL              if ( all == LDAP_MSG_ONE && lm->lm_chain != NULL )
                     ? lm->lm_chain : lm->lm_next);              {
         }                      lm->lm_chain->lm_next = lm->lm_next;
         if ( all == LDAP_MSG_ONE && lm->lm_chain != NULL )                      lm->lm_chain = NULL;
         {              }
                 lm->lm_chain->lm_next = lm->lm_next;              lm->lm_next = NULL;
                 lm->lm_chain = NULL;      }
         }      return lm;
         lm->lm_next = NULL;  
   
         *result = lm;  
         ld->ld_errno = LDAP_SUCCESS;  
         return( lm->lm_msgtype );  
 }  }
   
 static int  static int
 wait4msg(  wait4msg(
         LDAP *ld,          LDAP *ld,
Line 196  wait4msg( Line 207  wait4msg(
   
 #ifdef LDAP_DEBUG  #ifdef LDAP_DEBUG
         if ( timeout == NULL ) {          if ( timeout == NULL ) {
                 Debug( LDAP_DEBUG_TRACE, "wait4msg (infinite timeout)\n",                  Debug( LDAP_DEBUG_TRACE, "wait4msg (infinite timeout), msgid %d\n",
                     0, 0, 0 );                      msgid, 0, 0 );
         } else {          } else {
                 Debug( LDAP_DEBUG_TRACE, "wait4msg (timeout %ld sec, %ld usec)\n",                  Debug( LDAP_DEBUG_TRACE, "wait4msg (timeout %ld sec, %ld usec), msgid %d\n",
                        (long) timeout->tv_sec, (long) timeout->tv_usec, 0 );                         (long) timeout->tv_sec, (long) timeout->tv_usec, msgid );
         }          }
 #endif /* LDAP_DEBUG */  #endif /* LDAP_DEBUG */
   
Line 223  wait4msg( Line 234  wait4msg(
                 for ( lc = ld->ld_conns; lc != NULL; lc = lc->lconn_next ) {                  for ( lc = ld->ld_conns; lc != NULL; lc = 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 ) ) {
                                 rc = try_read1msg( ld, msgid, all, lc->lconn_sb,                  if( (*result = chkResponseList(ld, msgid, all)) == NULL ) {
                                     lc, result );                                      rc = try_read1msg( ld, msgid, all, lc->lconn_sb,
                                 break;                                          lc, result );
                   } else {
                       rc = (*result)->lm_msgtype;
                   }
                               break;
                         }                          }
                 }                  }
   
Line 314  try_read1msg( Line 329  try_read1msg(
         assert( ld != NULL );          assert( ld != NULL );
         assert( lc != NULL );          assert( lc != NULL );
                   
         Debug( LDAP_DEBUG_TRACE, "read1msg\n", 0, 0, 0 );          Debug( LDAP_DEBUG_TRACE, "read1msg: msgid %d, all %d\n", msgid, all, 0 );
   
     if ( lc->lconn_ber == NULL ) {      if ( lc->lconn_ber == NULL ) {
                 lc->lconn_ber = ldap_alloc_ber_with_options(ld);                  lc->lconn_ber = ldap_alloc_ber_with_options(ld);

Removed from v.1.50  
changed lines
  Added in v.1.51


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