]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-meta/delete.c
don't lookup rootdn if the password is incorrect (ITS#4004)
[openldap] / servers / slapd / back-meta / delete.c
index 36a89cdadcdb77283e2f56fea19ab2399f804893..7c1463d60faf910fa4c6658310252e5520133f6b 100644 (file)
@@ -74,6 +74,7 @@ retry:;
        } else if ( rs->sr_err == LDAP_SUCCESS ) {
                struct timeval  tv, *tvp = NULL;
                LDAPMessage     *res = NULL;
+               int             rc;
 
                if ( mi->mi_targets[ candidate ].mt_timeout[ META_OP_DELETE ] != 0 ) {
                        tv.tv_sec = mi->mi_targets[ candidate ].mt_timeout[ META_OP_DELETE ];
@@ -81,9 +82,10 @@ retry:;
                        tvp = &tv;
                }
 
-               rs->sr_err = ldap_result( mc->mc_conns[ candidate ].msc_ld,
+               rs->sr_err = LDAP_OTHER;
+               rc = ldap_result( mc->mc_conns[ candidate ].msc_ld,
                        msgid, LDAP_MSG_ONE, tvp, &res );
-               switch ( rs->sr_err ) {
+               switch ( rc ) {
                case -1:
                        rs->sr_err = LDAP_OTHER;
                        send_ldap_result( op, rs );
@@ -97,6 +99,14 @@ retry:;
                        send_ldap_result( op, rs );
                        goto cleanup;
 
+               case LDAP_RES_DELETE:
+                       rc = ldap_parse_result( mc->mc_conns[ candidate ].msc_ld,
+                               res, &rs->sr_err, NULL, NULL, NULL, NULL, 1 );
+                       if ( rc != LDAP_SUCCESS ) {
+                               rs->sr_err = rc;
+                       }
+                       break;
+
                default:
                        ldap_msgfree( res );
                        break;