From: Howard Chu Date: Wed, 13 Dec 2006 16:24:09 +0000 (+0000) Subject: ITS#4545 unchased referral fix from HEAD X-Git-Tag: OPENLDAP_REL_ENG_2_3_31~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8326d2be226547f816a46b583f6c17cdcd59f298;p=thirdparty%2Fopenldap.git ITS#4545 unchased referral fix from HEAD --- diff --git a/libraries/libldap/result.c b/libraries/libldap/result.c index 4db51b83e3..03a2677fe9 100644 --- a/libraries/libldap/result.c +++ b/libraries/libldap/result.c @@ -566,7 +566,7 @@ nextresp2: lr->lr_msgid, 0, 0); } - /* We sucessfully chased the reference */ + /* We successfully chased the reference */ v3ref = V3REF_SUCCESS; } } @@ -648,6 +648,26 @@ nextresp2: LDAP_FREE( lr->lr_res_error ); 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; + } } } }