]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-meta/modrdn.c
minor cleanup
[openldap] / servers / slapd / back-meta / modrdn.c
index 90b151761ee6dfa8acbc7e7e04165ca1c597118d..1c943b95d311eaf2e907e1092b856b3fc9f731ee 100644 (file)
@@ -115,18 +115,19 @@ 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_MODRDN ] != 0 ) {
-                       tv.tv_sec = mi->mi_targets[ candidate ].mt_timeout[ META_OP_MODRDN ];
+               if ( mi->mi_targets[ candidate ].mt_timeout[ LDAP_BACK_OP_MODRDN ] != 0 ) {
+                       tv.tv_sec = mi->mi_targets[ candidate ].mt_timeout[ LDAP_BACK_OP_MODRDN ];
                        tv.tv_usec = 0;
                        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;
                        break;
 
                case 0:
@@ -136,6 +137,14 @@ retry:;
                                LDAP_ADMINLIMIT_EXCEEDED : LDAP_OPERATIONS_ERROR;
                        break;
 
+               case LDAP_RES_RENAME:
+                       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;
@@ -157,10 +166,10 @@ cleanup:;
 
        if ( rs->sr_err == LDAP_SUCCESS ) {
                meta_back_op_result( mc, op, rs, candidate );
+       } else {
+               send_ldap_result( op, rs );
        }
 
-       send_ldap_result( op, rs );
-
        meta_back_release_conn( op, mc );
 
        return rs->sr_err;