]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-meta/bind.c
better fix: in case of error during bind, just bail out (very conservative, though)
[openldap] / servers / slapd / back-meta / bind.c
index 17dab2f39712ceb34df2f693cf95ef7b93b62f0e..6d890c56781c77b89656d2cead94c6fac637b2c9 100644 (file)
@@ -80,7 +80,7 @@ meta_back_bind( Operation *op, SlapReply *rs )
                if ( META_BACK_DEFER_ROOTDN_BIND( mi ) ) {
                        rs->sr_err = LDAP_SUCCESS;
                        rs->sr_text = NULL;
-                       send_ldap_result( op, rs );
+                       /* frontend will return success */
                        return rs->sr_err;
                }
 
@@ -184,10 +184,8 @@ meta_back_bind( Operation *op, SlapReply *rs )
                        rs->sr_err = lerr;
                        candidates[ i ].sr_tag = META_NOT_CANDIDATE;
 
-                       if ( META_BACK_ONERR_STOP( mi ) ) {
-                               rc = rs->sr_err;
-                               break;
-                       }
+                       rc = rs->sr_err;
+                       break;
                }
        }
 
@@ -391,7 +389,9 @@ retry:;
                                        /* mc here must be the regular mc,
                                         * reset and ready for init */
                                        rc = meta_back_init_one_conn( op, rs,
-                                               mt, msc, LDAP_BACK_DONTSEND );
+                                               mt, mc, msc, LDAP_BACK_CONN_ISPRIV( mc ),
+                                               candidate == mc->mc_authz_target,
+                                               LDAP_BACK_DONTSEND );
 
                                } else {
                                        /* can't do anything about it */
@@ -567,7 +567,10 @@ retry:;
                                        /* mc here must be the regular mc,
                                         * reset and ready for init */
                                        rc = meta_back_init_one_conn( op, rs,
-                                               mt, msc, LDAP_BACK_DONTSEND );
+                                               mt, mc, msc,
+                                               LDAP_BACK_CONN_ISPRIV( mc ),
+                                               candidate == mc->mc_authz_target,
+                                               LDAP_BACK_DONTSEND );
                                
 
                                } else {