ITS#2982 ok, we should NULL out lc after all...

This commit is contained in:
Howard Chu 2004-03-25 12:15:52 +00:00
parent d831315024
commit 62d050a0bd

View File

@ -73,7 +73,7 @@ static int ldap_mark_abandoned LDAP_P(( LDAP *ld, ber_int_t msgid ));
static int wait4msg LDAP_P(( LDAP *ld, ber_int_t msgid, int all, struct timeval *timeout, static int wait4msg LDAP_P(( LDAP *ld, ber_int_t msgid, int all, struct timeval *timeout,
LDAPMessage **result )); LDAPMessage **result ));
static ber_tag_t try_read1msg LDAP_P(( LDAP *ld, ber_int_t msgid, static ber_tag_t try_read1msg LDAP_P(( LDAP *ld, ber_int_t msgid,
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)); static LDAPMessage * chkResponseList LDAP_P(( LDAP *ld, int msgid, int all));
@ -320,7 +320,7 @@ wait4msg(
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, rc = try_read1msg( ld, msgid, all, lc->lconn_sb,
lc, result ); &lc, result );
break; break;
} }
} }
@ -374,7 +374,8 @@ wait4msg(
ldap_is_read_ready( ld, ldap_is_read_ready( ld,
lc->lconn_sb )) { lc->lconn_sb )) {
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;
} }
} }
} }
@ -410,7 +411,7 @@ try_read1msg(
ber_int_t msgid, ber_int_t msgid,
int all, int all,
Sockbuf *sb, Sockbuf *sb,
LDAPConn *lc, LDAPConn **lcp,
LDAPMessage **result ) LDAPMessage **result )
{ {
BerElement *ber; BerElement *ber;
@ -420,6 +421,7 @@ try_read1msg(
ber_len_t len; ber_len_t len;
int foundit = 0; int foundit = 0;
LDAPRequest *lr, *tmplr; LDAPRequest *lr, *tmplr;
LDAPConn *lc;
BerElement tmpber; BerElement tmpber;
int rc, refer_cnt, hadref, simple_request; int rc, refer_cnt, hadref, simple_request;
ber_int_t lderr; ber_int_t lderr;
@ -433,7 +435,8 @@ try_read1msg(
int v3ref; int v3ref;
assert( ld != NULL ); assert( ld != NULL );
assert( lc != NULL ); assert( lcp != NULL );
assert( *lcp != NULL );
#ifdef NEW_LOGGING #ifdef NEW_LOGGING
LDAP_LOG ( OPERATION, ARGS, "read1msg: msgid %d, all %d\n", msgid, all, 0 ); LDAP_LOG ( OPERATION, ARGS, "read1msg: msgid %d, all %d\n", msgid, all, 0 );
@ -441,6 +444,8 @@ try_read1msg(
Debug( LDAP_DEBUG_TRACE, "read1msg: msgid %d, all %d\n", msgid, all, 0 ); Debug( LDAP_DEBUG_TRACE, "read1msg: msgid %d, all %d\n", msgid, all, 0 );
#endif #endif
lc = *lcp;
retry: retry:
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);
@ -816,6 +821,7 @@ lr->lr_res_matched ? lr->lr_res_matched : "" );
if ( lc != NULL ) { if ( lc != NULL ) {
ldap_free_connection( ld, lc, 0, 1 ); ldap_free_connection( ld, lc, 0, 1 );
*lcp = NULL;
} }
} }
} }