]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-meta/bind.c
Read config tree from back-ldif
[openldap] / servers / slapd / back-meta / bind.c
index 36dc7af36cc465959eb005b8119ba4009d566f67..69fe2ea995ea527d5f127a425f0484a6123dad0f 100644 (file)
@@ -63,7 +63,7 @@ meta_back_bind( Operation *op, SlapReply *rs )
                op_type = META_OP_REQUIRE_ALL;
        }
        lc = meta_back_getconn( op, rs, op_type,
-                       &op->o_req_ndn, NULL );
+                       &op->o_req_ndn, NULL, LDAP_BACK_SENDERR );
        if ( !lc ) {
                Debug( LDAP_DEBUG_ANY,
                                "meta_back_bind: no target for dn %s.\n%s%s",
@@ -192,18 +192,11 @@ meta_back_do_single_bind(
                return -1;
        }
 
-       if ( op->o_ctrls ) {
-               rs->sr_err = ldap_set_option( lsc->msc_ld, 
-                               LDAP_OPT_SERVER_CONTROLS, op->o_ctrls );
-               if ( rs->sr_err != LDAP_SUCCESS ) {
-                       rs->sr_err = slap_map_api2result( rs );
-                       goto return_results;
-               }
-       }
-
        /* FIXME: this fixes the bind problem right now; we need
         * to use the asynchronous version to get the "matched"
         * and more in case of failure ... */
+       /* FIXME: should be check if at least some of the op->o_ctrls
+        * can/should be passed? */
        rs->sr_err = ldap_sasl_bind( lsc->msc_ld, mdn.bv_val,
                        LDAP_SASL_SIMPLE, &op->orb_cred,
                        op->o_ctrls, NULL, &msgid );
@@ -255,7 +248,7 @@ retry:;
        lsc->msc_bound = META_BOUND;
        lc->mc_bound_target = candidate;
 
-       if ( li->savecred ) {
+       if ( LDAP_BACK_SAVECRED( li ) ) {
                if ( !BER_BVISNULL( &lsc->msc_cred ) ) {
                        /* destroy sensitive data */
                        memset( lsc->msc_cred.bv_val, 0, lsc->msc_cred.bv_len );
@@ -284,7 +277,7 @@ return_results:;
  * meta_back_dobind
  */
 int
-meta_back_dobind( struct metaconn *lc, Operation *op )
+meta_back_dobind( struct metaconn *lc, Operation *op, ldap_back_send_t sendok )
 {
        struct metasingleconn   *lsc;
        int                     bound = 0, i;
@@ -308,17 +301,6 @@ meta_back_dobind( struct metaconn *lc, Operation *op )
                        continue;
                }
 
-               /*
-                * If required, set controls
-                */
-               if ( op->o_ctrls ) {
-                       if ( ldap_set_option( lsc->msc_ld, LDAP_OPT_SERVER_CONTROLS,
-                                       op->o_ctrls ) != LDAP_SUCCESS ) {
-                               ( void )meta_clear_one_candidate( lsc, 1 );
-                               continue;
-                       }
-               }
-
                /*
                 * If the target is already bound it is skipped
                 */
@@ -346,8 +328,10 @@ meta_back_dobind( struct metaconn *lc, Operation *op )
                        BER_BVZERO( &lsc->msc_cred );
                }
 
+               /* FIXME: should we check if at least some of the op->o_ctrls
+                * can/should be passed? */
                rc = ldap_sasl_bind( lsc->msc_ld, "", LDAP_SASL_SIMPLE, &cred,
-                               op->o_ctrls, NULL, &msgid );
+                               NULL, NULL, &msgid );
                if ( rc == LDAP_SUCCESS ) {
                        LDAPMessage     *res;
                        struct timeval  tv = { 0, 0 };