X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fbackglue.c;h=af3949325d9af8dfb9f74a87d3608bd5b073b063;hb=2f9b89b4afc2f8fc68ab3f2d1122c92ec53db926;hp=e2afd091567ab08fa75260252ca744500652333b;hpb=7fae7fe15599213581d3e667a8e97a91f95faabb;p=openldap diff --git a/servers/slapd/backglue.c b/servers/slapd/backglue.c index e2afd09156..af3949325d 100644 --- a/servers/slapd/backglue.c +++ b/servers/slapd/backglue.c @@ -413,8 +413,15 @@ glue_back_bind ( be = glue_back_select (b0, ndn->bv_val); if (be && be->be_bind) { - conn->c_authz_backend = be; rc = be->be_bind (be, conn, op, dn, ndn, method, cred, edn); + + if( rc == LDAP_SUCCESS ) { + ldap_pvt_thread_mutex_lock( &conn->c_mutex ); + if( conn->c_authz_backend == NULL ) { + conn->c_authz_backend = be; + } + ldap_pvt_thread_mutex_unlock( &conn->c_mutex ); + } } else { rc = LDAP_UNWILLING_TO_PERFORM; send_ldap_result (conn, op, rc, NULL, "No bind target found",