Diff for /libraries/libldap/result.c between versions 1.99.2.17 and 1.99.2.19

version 1.99.2.17, 2006/08/18 15:14:38 version 1.99.2.19, 2006/12/13 15:24:09
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.99.2.16 2006/08/17 02:43:58 kurt Exp $ */  /* $OpenLDAP: pkg/ldap/libraries/libldap/result.c,v 1.99.2.18 2006/11/07 04:06:22 hyc 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-2006 The OpenLDAP Foundation.   * Copyright 1998-2006 The OpenLDAP Foundation.
Line 301  wait4msg( Line 301  wait4msg(
                                 if ( rc == -1 ) {                                  if ( rc == -1 ) {
                                         Debug( LDAP_DEBUG_TRACE,                                          Debug( LDAP_DEBUG_TRACE,
                                                 "ldap_int_select returned -1: errno %d\n",                                                  "ldap_int_select returned -1: errno %d\n",
                                                 errno, 0, 0 );                                                  sock_errno(), 0, 0 );
                                 }                                  }
 #endif  #endif
   
                                 if ( rc == 0 || ( rc == -1 && (                                  if ( rc == 0 || ( rc == -1 && (
                                         !LDAP_BOOL_GET(&ld->ld_options, LDAP_BOOL_RESTART)                                          !LDAP_BOOL_GET(&ld->ld_options, LDAP_BOOL_RESTART)
                                                 || errno != EINTR )))                                                  || sock_errno() != EINTR )))
                                 {                                  {
                                         ld->ld_errno = (rc == -1 ? LDAP_SERVER_DOWN :                                          ld->ld_errno = (rc == -1 ? LDAP_SERVER_DOWN :
                                                 LDAP_TIMEOUT);                                                  LDAP_TIMEOUT);
Line 445  retry: Line 445  retry:
         assert( LBER_VALID (ber) );          assert( LBER_VALID (ber) );
   
         /* get the next message */          /* get the next message */
         errno = 0;          sock_errset(0);
 #ifdef LDAP_CONNECTIONLESS  #ifdef LDAP_CONNECTIONLESS
         if ( LDAP_IS_UDP(ld) ) {          if ( LDAP_IS_UDP(ld) ) {
                 struct sockaddr from;                  struct sockaddr from;
Line 469  nextresp3: Line 469  nextresp3:
                                 "ber_get_next failed.\n", 0, 0, 0 );                                  "ber_get_next failed.\n", 0, 0, 0 );
 #endif               #endif             
 #ifdef EWOULDBLOCK                        #ifdef EWOULDBLOCK                      
                         if (errno==EWOULDBLOCK) return LDAP_MSG_X_KEEP_LOOKING;                          if ( sock_errno() == EWOULDBLOCK ) return LDAP_MSG_X_KEEP_LOOKING;
 #endif  #endif
 #ifdef EAGAIN  #ifdef EAGAIN
                         if (errno == EAGAIN) return LDAP_MSG_X_KEEP_LOOKING;                          if ( sock_errno() == EAGAIN ) return LDAP_MSG_X_KEEP_LOOKING;
 #endif  #endif
                         ld->ld_errno = LDAP_SERVER_DOWN;                          ld->ld_errno = LDAP_SERVER_DOWN;
                         return -1;                          return -1;
Line 566  nextresp2: Line 566  nextresp2:
                                                                 lr->lr_msgid, 0, 0);                                                                  lr->lr_msgid, 0, 0);
                                                 }                                                  }
   
                                                 /* We sucessfully chased the reference */                                                  /* We successfully chased the reference */
                                                 v3ref = V3REF_SUCCESS;                                                  v3ref = V3REF_SUCCESS;
                                         }                                          }
                                 }                                  }
Line 648  nextresp2: Line 648  nextresp2:
                                         LDAP_FREE( lr->lr_res_error );                                          LDAP_FREE( lr->lr_res_error );
                                         lr->lr_res_error = NULL;                                          lr->lr_res_error = NULL;
                                 }                                  }
   
                                   /* Since it's not a SearchReference, it must be a
                                    * result. Since we're not chasing the referral,
                                    * this request is done.
                                    */
                                   if ( v3ref == V3REF_TOAPP ) {
                                           lr->lr_status = LDAP_REQST_COMPLETED;
                                           Debug( LDAP_DEBUG_TRACE,
                                                   "request done: ld %p msgid %d, "
                                                   "referral returned to app\n",
                                                   (void *)ld, lr->lr_msgid, 0);
   #ifdef LDAP_R_COMPILE
                                           ldap_pvt_thread_mutex_lock( &ld->ld_req_mutex );
   #endif
                                           ldap_free_request( ld, lr );
   #ifdef LDAP_R_COMPILE
                                           ldap_pvt_thread_mutex_unlock( &ld->ld_req_mutex );
   #endif
                                           lr = NULL;
                                   }
                         }                          }
                 }                  }
         }          }

Removed from v.1.99.2.17  
changed lines
  Added in v.1.99.2.19


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