assert( ld != 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
ldap_pvt_thread_mutex_lock( &ld->ld_res_mutex );
int msgid,
int all)
{
- LDAPMessage *lm, *lastlm, *nextlm;
+ 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
*/
Debug( LDAP_DEBUG_TRACE,
- "ldap_chkResponseList for msgid=%d, all=%d\n",
- msgid, all, 0 );
- lastlm = NULL;
+ "ldap_chkResponseList ld %p msgid %d all %d\n",
+ ld, msgid, all );
+ lastlm = &ld->ld_responses;
for ( lm = ld->ld_responses; lm != NULL; lm = nextlm ) {
nextlm = lm->lm_next;
msgid, 0, 0 );
ldap_mark_abandoned( ld, lm->lm_msgid );
- if ( lastlm == NULL ) {
- /* Remove first entry in list */
- ld->ld_responses = lm->lm_next;
- } else {
- lastlm->lm_next = nextlm;
- }
+ /* Remove this entry from list */
+ *lastlm = nextlm;
ldap_msgfree( lm );
if ( msgid == LDAP_RES_ANY || lm->lm_msgid == msgid ) {
LDAPMessage *tmp;
- if ( all == LDAP_MSG_ONE || msgid == LDAP_RES_UNSOLICITED ) {
+ if ( all == LDAP_MSG_ONE || all == LDAP_MSG_RECEIVED ||
+ msgid == LDAP_RES_UNSOLICITED ) {
break;
}
- if ( lm->lm_chain == NULL ) {
- assert(lm->lm_chain_tail == lm);
- if ((lm->lm_msgtype == LDAP_RES_SEARCH_ENTRY) ||
- (lm->lm_msgtype == LDAP_RES_SEARCH_REFERENCE) ||
- (lm->lm_msgtype == LDAP_RES_INTERMEDIATE)) {
- tmp = NULL;
- } else {
- tmp = lm;
- }
- } else {
- assert(lm->lm_chain_tail != NULL);
- assert(lm->lm_chain_tail->lm_chain != NULL);
- if ((lm->lm_chain_tail->lm_chain->lm_msgtype
- == LDAP_RES_SEARCH_ENTRY) ||
- (lm->lm_chain_tail->lm_chain->lm_msgtype
- == LDAP_RES_SEARCH_REFERENCE) ||
- (lm->lm_chain_tail->lm_chain->lm_msgtype
- == LDAP_RES_INTERMEDIATE)) {
- tmp = NULL;
- } else {
- tmp = lm->lm_chain_tail->lm_chain;
- }
+ tmp = lm->lm_chain_tail;
+ if ((tmp->lm_msgtype == LDAP_RES_SEARCH_ENTRY) ||
+ (tmp->lm_msgtype == LDAP_RES_SEARCH_REFERENCE) ||
+ (tmp->lm_msgtype == LDAP_RES_INTERMEDIATE)) {
+ tmp = NULL;
}
if ( tmp == NULL ) {
break;
}
- lastlm = lm;
+ lastlm = &lm->lm_next;
}
if ( lm != NULL ) {
/* Found an entry, remove it from the list */
- if ( lastlm == NULL ) {
- ld->ld_responses = (all == LDAP_MSG_ONE && lm->lm_chain != NULL
- ? lm->lm_chain : lm->lm_next);
- } else {
- lastlm->lm_next = (all == LDAP_MSG_ONE && lm->lm_chain != NULL
- ? lm->lm_chain : lm->lm_next);
- }
if ( all == LDAP_MSG_ONE && lm->lm_chain != NULL ) {
+ *lastlm = lm->lm_chain;
lm->lm_chain->lm_next = lm->lm_next;
lm->lm_chain->lm_chain_tail = ( lm->lm_chain_tail != lm ) ? lm->lm_chain_tail : lm->lm_chain;
- assert(lm->lm_chain->lm_chain_tail != NULL);
lm->lm_chain = NULL;
lm->lm_chain_tail = NULL;
- }
+ } else {
+ *lastlm = lm->lm_next;
+ }
lm->lm_next = NULL;
}
#ifdef LDAP_DEBUG
if( lm == NULL) {
Debug( LDAP_DEBUG_TRACE,
- "ldap_chkResponseList returns NULL\n", 0, 0, 0);
+ "ldap_chkResponseList returns ld %p NULL\n", ld, 0, 0);
} else {
Debug( LDAP_DEBUG_TRACE,
- "ldap_chkResponseList returns msgid %d, type 0x%02lu\n",
- lm->lm_msgid, (unsigned long) lm->lm_msgtype, 0);
+ "ldap_chkResponseList returns ld %p msgid %d, type 0x%02lu\n",
+ ld, lm->lm_msgid, (unsigned long) lm->lm_msgtype);
}
#endif
return lm;
LDAPMessage **result )
{
int rc;
- struct timeval tv, tv0, *tvp;
+ struct timeval tv = { 0 },
+ tv0 = { 0 },
+ *tvp;
time_t start_time = 0;
time_t tmp_time;
LDAPConn *lc, *nextlc;
#ifdef LDAP_DEBUG
if ( timeout == NULL ) {
- Debug( LDAP_DEBUG_TRACE, "wait4msg (infinite timeout), msgid %d\n",
- msgid, 0, 0 );
+ Debug( LDAP_DEBUG_TRACE, "wait4msg ld %p msgid %d (infinite timeout)\n",
+ ld, msgid, 0 );
} else {
- Debug( LDAP_DEBUG_TRACE, "wait4msg (timeout %ld sec, %ld usec), msgid %d\n",
- (long) timeout->tv_sec, (long) timeout->tv_usec, msgid );
+ Debug( LDAP_DEBUG_TRACE, "wait4msg ld %p msgid %d (timeout %ld usec)\n",
+ ld, msgid, (long)timeout->tv_sec * 1000000 + timeout->tv_usec );
}
#endif /* LDAP_DEBUG */
rc = -2;
while ( rc == -2 ) {
#ifdef LDAP_DEBUG
- Debug( LDAP_DEBUG_TRACE, "wait4msg continue, msgid %d, all %d\n",
- msgid, all, 0 );
if ( ldap_debug & LDAP_DEBUG_TRACE ) {
+ Debug( LDAP_DEBUG_TRACE, "wait4msg continue ld %p msgid %d all %d\n",
+ ld, msgid, all );
ldap_dump_connection( ld, ld->ld_conns, 1 );
ldap_dump_requests_and_responses( ld );
}
} else {
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 ) {
nextlc = lc->lconn_next;
if ( ber_sockbuf_ctrl( lc->lconn_sb,
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,
&lc, result );
+#ifdef LDAP_R_COMPILE
+ ldap_pvt_thread_mutex_lock( &ld->ld_conn_mutex );
+#endif
lc_ready = 1;
break;
}
- }
+ }
+#ifdef LDAP_R_COMPILE
+ ldap_pvt_thread_mutex_unlock( &ld->ld_conn_mutex );
+#endif
if ( !lc_ready ) {
rc = ldap_int_select( ld, tvp );
}
#ifdef LDAP_R_COMPILE
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;
lc = nextlc )
if ( lc->lconn_status == LDAP_CONNST_CONNECTED &&
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,
lc->lconn_sb, &lc, result );
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
}
}
}
if ( rc == -2 && tvp != NULL ) {
tmp_time = time( NULL );
- if (( tv0.tv_sec -= ( tmp_time - start_time )) <= 0 ) {
+ tv0.tv_sec -= ( tmp_time - start_time );
+ if ( tv0.tv_sec <= 0 ) {
rc = 0; /* timed out */
ld->ld_errno = LDAP_TIMEOUT;
break;
}
tv.tv_sec = tv0.tv_sec;
- Debug( LDAP_DEBUG_TRACE, "wait4msg: %ld secs to go\n",
- (long) tv.tv_sec, 0, 0 );
+ Debug( LDAP_DEBUG_TRACE, "wait4msg ld %p %ld secs to go\n",
+ ld, (long) tv.tv_sec, 0 );
start_time = tmp_time;
}
}
#ifdef LDAP_CONNECTIONLESS
LDAPMessage *tmp = NULL, *chain_head = NULL;
- int firstmsg = 1, moremsgs = 0, isv2 = 0;
+ int moremsgs = 0, isv2 = 0;
#endif
/*
* v3ref = flag for V3 referral / search reference
* 0 = not a ref, 1 = sucessfully chased ref, -1 = pass ref to application
*/
- int v3ref;
+ enum {
+ V3REF_NOREF = 0,
+ V3REF_SUCCESS = 1,
+ V3REF_TOAPP = -1
+ } v3ref;
assert( ld != 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;
/* if it's been abandoned, toss it */
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:
ber_free( ber, 1 );
if ( ber_sockbuf_ctrl( sb, LBER_SB_OPT_DATA_READY, NULL ) ) {
return( -2 ); /* continue looking */
}
- if (( lr = ldap_find_request_by_msgid( ld, id )) == NULL ) {
+ lr = ldap_find_request_by_msgid( ld, id );
+ if ( lr == NULL ) {
Debug( LDAP_DEBUG_ANY,
- "no request for response with msgid %ld (tossing)\n",
- (long) id, 0, 0 );
+ "no request for response on ld %p msgid %ld (tossing)\n",
+ ld, (long) id, 0 );
goto retry_ber;
}
#ifdef LDAP_CONNECTIONLESS
}
Debug( LDAP_DEBUG_TRACE,
- "ldap_read: message type %s msgid %ld, original id %ld\n",
- ldap_int_msgtype2str( tag ),
- (long) lr->lr_msgid, (long) lr->lr_origid );
+ "read1msg: ld %p msgid %ld message type %s\n",
+ ld, (long) lr->lr_msgid, ldap_int_msgtype2str( tag ));
id = lr->lr_origid;
refer_cnt = 0;
* This code figures out if we are going to chase a
* referral / search reference, or pass it back to the application
*/
- v3ref = 0; /* Assume not a V3 search reference or referral */
+ v3ref = V3REF_NOREF; /* Assume not a V3 search reference/referral */
if( (tag != LDAP_RES_SEARCH_ENTRY) && (ld->ld_version > LDAP_VERSION2) ) {
BerElement tmpber = *ber; /* struct copy */
char **refs = NULL;
- if( tag == LDAP_RES_SEARCH_REFERENCE) {
+ if( tag == LDAP_RES_SEARCH_REFERENCE ) {
/* This is a V3 search reference */
- /* Assume we do not chase the reference, but pass it to application */
- v3ref = -1;
+ /* Assume we do not chase the reference,
+ * but pass it to application */
+ v3ref = V3REF_TOAPP;
if( LDAP_BOOL_GET(&ld->ld_options, LDAP_BOOL_REFERRALS) ||
(lr->lr_parent != NULL) )
{
if ( ber_scanf( &tmpber, "{v}", &refs ) == LBER_ERROR ) {
rc = LDAP_DECODING_ERROR;
} else {
- /* Note: refs arrary is freed by ldap_chase_v3referrals */
+ /* Note: refs array is freed by ldap_chase_v3referrals */
refer_cnt = ldap_chase_v3referrals( ld, lr, refs,
1, &lr->lr_res_error, &hadref );
- if ( refer_cnt > 0 ) { /* sucessfully chased reference */
+ if ( refer_cnt > 0 ) {
+ /* sucessfully chased reference */
/* If haven't got end search, set chasing referrals */
if( lr->lr_status != LDAP_REQST_COMPLETED) {
lr->lr_status = LDAP_REQST_CHASINGREFS;
Debug( LDAP_DEBUG_TRACE,
- "read1msg: search ref chased, mark request chasing refs, id = %d\n",
- lr->lr_msgid, 0, 0);
+ "read1msg: search ref chased, "
+ "mark request chasing refs, "
+ "id = %d\n",
+ lr->lr_msgid, 0, 0);
}
- v3ref = 1; /* We sucessfully chased the reference */
+
+ /* We sucessfully chased the reference */
+ v3ref = V3REF_SUCCESS;
}
}
}
} else {
/* Check for V3 referral */
- ber_len_t len;
- if ( ber_scanf( &tmpber, "{iaa",/*}*/ &lderr,
- &lr->lr_res_matched, &lr->lr_res_error )
- != LBER_ERROR ) {
+ ber_len_t len;
+ char *lr_res_error = NULL;
+
+ if ( ber_scanf( &tmpber, "{eaa",/*}*/ &lderr,
+ &lr->lr_res_matched, &lr_res_error )
+ != LBER_ERROR )
+ {
+ if ( lr_res_error != NULL ) {
+ if ( lr->lr_res_error != NULL ) {
+ (void)ldap_append_referral( ld, &lr->lr_res_error, lr_res_error );
+ LDAP_FREE( (char *)lr_res_error );
+
+ } else {
+ lr->lr_res_error = lr_res_error;
+ }
+ }
+
/* Check if V3 referral */
- if( ber_peek_tag( &tmpber, &len) == LDAP_TAG_REFERRAL ) {
+ if ( ber_peek_tag( &tmpber, &len ) == LDAP_TAG_REFERRAL ) {
/* We have a V3 referral, assume we cannot chase it */
- v3ref = -1;
+ v3ref = V3REF_TOAPP;
if( LDAP_BOOL_GET(&ld->ld_options, LDAP_BOOL_REFERRALS)
|| (lr->lr_parent != NULL) )
{
- v3ref = -1; /* Assume referral not chased and return it to app */
+ /* Assume referral not chased and return it to app */
+ v3ref = V3REF_TOAPP;
+
/* Get the referral list */
if( ber_scanf( &tmpber, "{v}", &refs) == LBER_ERROR) {
rc = LDAP_DECODING_ERROR;
lr->lr_status = LDAP_REQST_COMPLETED;
Debug( LDAP_DEBUG_TRACE,
- "read1msg: referral decode error, mark request completed, id = %d\n",
- lr->lr_msgid, 0, 0);
+ "read1msg: referral decode error, mark request completed, ld %p msgid %d\n",
+ ld, lr->lr_msgid, 0);
} else {
/* Chase the referral
* Note: refs arrary is freed by ldap_chase_v3referrals
0, &lr->lr_res_error, &hadref );
lr->lr_status = LDAP_REQST_COMPLETED;
Debug( LDAP_DEBUG_TRACE,
- "read1msg: referral chased, mark request completed, id = %d\n",
- lr->lr_msgid, 0, 0);
+ "read1msg: referral chased, mark request completed, ld %p msgid %d\n",
+ ld, lr->lr_msgid, 0);
if( refer_cnt > 0) {
- v3ref = 1; /* Referral successfully chased */
+ /* Referral successfully chased */
+ v3ref = V3REF_SUCCESS;
}
}
}
* go through the following code. This code also chases V2 referrals
* and checks if all referrals have been chased.
*/
- if ( (tag != LDAP_RES_SEARCH_ENTRY) && (v3ref > -1) &&
+ if ( (tag != LDAP_RES_SEARCH_ENTRY) && (v3ref != V3REF_TOAPP) &&
(tag != LDAP_RES_INTERMEDIATE ))
{
/* For a v3 search referral/reference, only come here if already chased it */
( lr->lr_parent != NULL ||
LDAP_BOOL_GET(&ld->ld_options, LDAP_BOOL_REFERRALS) ) )
{
+ char *lr_res_error = NULL;
+
tmpber = *ber; /* struct copy */
- if ( v3ref == 1 ) {
+ if ( v3ref == V3REF_SUCCESS ) {
/* V3 search reference or V3 referral
* sucessfully chased. If this message
* is a search result, then it has no more
*/
if ( tag == LDAP_RES_SEARCH_RESULT )
refer_cnt = 0;
- } else if ( ber_scanf( &tmpber, "{iaa}", &lderr,
- &lr->lr_res_matched, &lr->lr_res_error )
- != LBER_ERROR ) {
- if ( lderr != LDAP_SUCCESS ) {
+ } else if ( ber_scanf( &tmpber, "{eaa}", &lderr,
+ &lr->lr_res_matched, &lr_res_error )
+ != LBER_ERROR )
+ {
+ if ( lr_res_error != NULL ) {
+ if ( lr->lr_res_error != NULL ) {
+ (void)ldap_append_referral( ld, &lr->lr_res_error, lr_res_error );
+ LDAP_FREE( (char *)lr_res_error );
+ } else {
+ lr->lr_res_error = lr_res_error;
+ }
+ lr_res_error = NULL;
+ }
+
+ switch ( lderr ) {
+ case LDAP_SUCCESS:
+ case LDAP_COMPARE_TRUE:
+ case LDAP_COMPARE_FALSE:
+ break;
+
+ default:
+ if ( lr->lr_res_error == NULL
+ || lr->lr_res_error[ 0 ] == '\0' )
+ {
+ break;
+ }
+
/* referrals are in error string */
refer_cnt = ldap_chase_referrals( ld, lr,
&lr->lr_res_error, -1, &hadref );
lr->lr_status = LDAP_REQST_COMPLETED;
Debug( LDAP_DEBUG_TRACE,
- "read1msg: V2 referral chased, mark request completed, id = %d\n", lr->lr_msgid, 0, 0);
+ "read1msg: V2 referral chased, "
+ "mark request completed, id = %d\n",
+ lr->lr_msgid, 0, 0 );
+ break;
}
/* save errno, message, and matched string */
}
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 */
ber_free( ber, 1 );
lr->lr_status = LDAP_REQST_COMPLETED; /* declare this request done */
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 ) {
merge_error_info( ld, lr->lr_parent, lr );
{
id = lr->lr_msgid;
tag = lr->lr_res_msgtype;
- Debug( LDAP_DEBUG_ANY, "request %ld done\n",
- (long) id, 0, 0 );
+ Debug( LDAP_DEBUG_ANY, "request done: ld %p msgid %ld\n",
+ ld, (long) id, 0 );
Debug( LDAP_DEBUG_TRACE,
"res_errno: %d, res_error: <%s>, res_matched: <%s>\n",
lr->lr_res_errno, lr->lr_res_error ? lr->lr_res_error : "",
}
if ( lc != NULL ) {
+#ifdef LDAP_R_COMPILE
+ ldap_pvt_thread_mutex_lock( &ld->ld_req_mutex );
+#endif
ldap_free_connection( ld, lc, 0, 1 );
+#ifdef LDAP_R_COMPILE
+ ldap_pvt_thread_mutex_unlock( &ld->ld_req_mutex );
+#endif
*lcp = NULL;
}
}
newmsg->lm_msgid = (int)id;
newmsg->lm_msgtype = tag;
newmsg->lm_ber = ber;
+ newmsg->lm_chain_tail = newmsg;
#ifdef LDAP_CONNECTIONLESS
/* CLDAP replies all fit in a single datagram. In LDAPv2 RFC1798
if (ber_sockbuf_ctrl(sb, LBER_SB_OPT_DATA_READY, NULL)) ok=1;
}
/* set up response chain */
- if ( firstmsg ) {
- firstmsg = 0;
+ if ( tmp == NULL ) {
newmsg->lm_next = ld->ld_responses;
ld->ld_responses = newmsg;
- newmsg->lm_chain_tail = newmsg;
chain_head = newmsg;
} else {
- assert( tmp != NULL );
tmp->lm_chain = newmsg;
- chain_head->lm_chain_tail = tmp;
}
+ chain_head->lm_chain_tail = newmsg;
tmp = newmsg;
/* "ok" means there's more to parse */
if (ok) {
* first response off the head of the chain.
*/
tmp->lm_chain = newmsg;
- chain_head->lm_chain_tail = tmp;
+ chain_head->lm_chain_tail = newmsg;
*result = chkResponseList( ld, msgid, all );
ld->ld_errno = LDAP_SUCCESS;
return( (*result)->lm_msgtype );
newmsg->lm_next = ld->ld_responses;
ld->ld_responses = newmsg;
- newmsg->lm_chain_tail = newmsg;
goto exit;
}
- Debug( LDAP_DEBUG_TRACE, "adding response id %ld type %ld:\n",
- (long) newmsg->lm_msgid, (long) newmsg->lm_msgtype, 0 );
+ Debug( LDAP_DEBUG_TRACE, "adding response ld %p msgid %ld type %ld:\n",
+ ld, (long) newmsg->lm_msgid, (long) newmsg->lm_msgtype );
/* part of a search response - add to end of list of entries */
- if (l->lm_chain == NULL) {
- assert(l->lm_chain_tail == l);
- l->lm_chain = newmsg;
- } else {
- assert(l->lm_chain_tail != NULL);
- assert(l->lm_chain_tail->lm_chain != NULL);
- if ((l->lm_chain_tail->lm_chain->lm_msgtype
- == LDAP_RES_SEARCH_ENTRY) ||
- (l->lm_chain_tail->lm_chain->lm_msgtype
- == LDAP_RES_SEARCH_REFERENCE) ||
- (l->lm_chain_tail->lm_chain->lm_msgtype
- == LDAP_RES_INTERMEDIATE)) {
- l->lm_chain_tail->lm_chain->lm_chain = newmsg;
- l->lm_chain_tail = l->lm_chain_tail->lm_chain;
- } else {
- /*FIXME: ldap_msgfree( l->lm_chain_tail->lm_chain );*/
- l->lm_chain_tail->lm_chain = newmsg;
- }
- }
+ l->lm_chain_tail->lm_chain = newmsg;
+ l->lm_chain_tail = newmsg;
/* return the whole chain if that's what we were looking for */
if ( foundit ) {
}
if ( ber_printf( ber, "{it{ess}}", lr->lr_msgid,
- lr->lr_res_msgtype, lr->lr_res_errno,
- lr->lr_res_matched ? lr->lr_res_matched : "",
- lr->lr_res_error ? lr->lr_res_error : "" ) == -1 ) {
-
+ lr->lr_res_msgtype, lr->lr_res_errno,
+ lr->lr_res_matched ? lr->lr_res_matched : "",
+ lr->lr_res_error ? lr->lr_res_error : "" ) == -1 )
+ {
ld->ld_errno = LDAP_ENCODING_ERROR;
ber_free(ber, 1);
return( LBER_ERROR );
return( LBER_ERROR );
}
- if ( ber_get_int( ber, &along ) == LBER_ERROR ) {
+ if ( ber_get_enum( ber, &along ) == LBER_ERROR ) {
ld->ld_errno = LDAP_DECODING_ERROR;
ber_free(ber, 1);
return( LBER_ERROR );
lr->lr_res_error );
}
} else if ( lr->lr_res_errno != LDAP_SUCCESS &&
- parentr->lr_res_errno == LDAP_SUCCESS ) {
+ parentr->lr_res_errno == LDAP_SUCCESS )
+ {
parentr->lr_res_errno = lr->lr_res_errno;
if ( parentr->lr_res_error != NULL ) {
LDAP_FREE( parentr->lr_res_error );
}
parentr->lr_res_error = lr->lr_res_error;
lr->lr_res_error = NULL;
- if ( LDAP_NAME_ERROR( lr->lr_res_errno )) {
+ if ( LDAP_NAME_ERROR( lr->lr_res_errno ) ) {
if ( parentr->lr_res_matched != NULL ) {
LDAP_FREE( parentr->lr_res_matched );
}
ldap_msgtype( LDAPMessage *lm )
{
assert( lm != NULL );
- return ( lm != NULL ) ? lm->lm_msgtype : -1;
+ return ( lm != NULL ) ? (int)lm->lm_msgtype : -1;
}