From: Howard Chu Date: Fri, 11 Jan 2008 03:17:10 +0000 (+0000) Subject: ITS#5319 allow rename to same DN X-Git-Tag: OPENLDAP_REL_ENG_2_4_9~20^2~223 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=25ba37cc35373d63de05bb1680091cc10b0e9044;p=openldap ITS#5319 allow rename to same DN --- diff --git a/servers/slapd/back-bdb/modrdn.c b/servers/slapd/back-bdb/modrdn.c index 965b1e46e7..4de5984383 100644 --- a/servers/slapd/back-bdb/modrdn.c +++ b/servers/slapd/back-bdb/modrdn.c @@ -559,6 +559,9 @@ retry: /* transaction retry */ case DB_NOTFOUND: break; case 0: + /* Allow rename to same DN */ + if ( nei == ei ) + break; rs->sr_err = LDAP_ALREADY_EXISTS; goto return_results; default: @@ -588,6 +591,27 @@ retry: /* transaction retry */ } } + /* Rename to exactly the same name, noop */ + if ( nei == ei && bvmatch( &e->e_name, &new_dn )) { + rs->sr_err = LDAP_SUCCESS; + if ( op->o_postread ) { + if( postread_ctrl == NULL ) { + postread_ctrl = &ctrls[num_ctrls++]; + ctrls[num_ctrls] = NULL; + } + if( slap_read_controls( op, rs, e, + &slap_post_read_bv, postread_ctrl ) ) + { + Debug( LDAP_DEBUG_TRACE, + "<=- " LDAP_XSTRING(bdb_modrdn) + ": post-read failed!\n", 0, 0, 0 ); + } + } + TXN_ABORT( ltid ); + ltid = NULL; + goto return_results; + } + /* nested transaction */ rs->sr_err = TXN_BEGIN( bdb->bi_dbenv, ltid, <2, bdb->bi_db_opflags ); rs->sr_text = NULL;